Wild pointer란?
초기화 되지 않은 포인터를 의미한다.
초기화 되지 않은 포인터를 사용하면 해당 포인터가 가리키는 주소가 어디인지 모르기 때문에, 잘못하면 이상한 메모리를 참조할 수도 있고, 메모리 할당을 못 받을 수도 있다. 따라서, 아래의 해결 방법을 통해서 해당 문제를 방지해야한다.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int * pi;
*pi = 12; // pi는 wild pointer이다.
pi = malloc(sizeof(int)); // wild pointer의 해결방안 1 - malloc(동적 할당: heap 영역)
// 여기서 동작 할당을 하고 NULL을 확인해야함!!!
*pi = 12;
int a = 12;
pi = &a; // wild pointer의 해결방안 2 - 변수(정적 할당: Stack 영역
free(pi);
return 0;
}
'2학년 2학기 > c언어' 카테고리의 다른 글
14-1장 전처리기와 단순 매크로 (0) | 2024.12.02 |
---|---|
13-12장 다차원 배열의 동적 할당 ⭐⭐⭐ (0) | 2024.11.26 |
13-10장 Dangling pointer (0) | 2024.11.26 |
13-9장 메모리 누수(3)_먼저 할당된 메모리 주소를 해제를 한 경우 (0) | 2024.11.26 |
13-8장 메모리 누수(2)_이미 해제된 동적 메모리 영역을 다시 해제 하려고하는 경우 (0) | 2024.11.26 |