본문 바로가기
2학년 2학기/c언어

13-11장 Wild pointer

by kkkkk1023 2024. 11. 26.

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