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;
}