2학년 2학기/c언어
13-11장 Wild pointer
kkkkk1023
2024. 11. 26. 15:50
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;
}