1 개요[ | ]
- 널 포인터 역참조
- Null Pointer Dereference. Null Dereference
- 널 포인터에 어떤 값을 대입할 때 발생하는 에러
- 많은 소프트웨어가 실행 도중 죽는 원인이 됨
- C, C++, Java, .NET 등의 언어에서 발생 가능
2 예제[ | ]
코드
C
Copy
// test.c
#include <stdio.h>
int main()
{
int *p = NULL; // NULL 값 대입
*p = 1; // 널 포인터 역참조
return 0;
}
실행
Console
Copy
$ ./test.out
Segmentation fault (core dumped)
- → Segmentation fault 발생하며 프로그램 오류 발생
3 오류 발생[ | ]
- malloc() 호출 시 메모리 부족으로 NULL 이 넘어갈 경우
C
Copy
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void getName(char **ppName);
int main()
{
char *pName;
getName(&pName);
printf("%s", pName);
return 0;
}
void getName(char **ppName)
{
char name[256];
fgets(name, sizeof(name), stdin);
*ppName = (char *)malloc(strlen(name) * sizeof(char)); // 메모리 부족으로 NULL 값이 넘어갈 경우
strcpy(*ppName, name); // 널 포인터 역참조 오류 발생 가능성 있음
}
- → *ppName 이 NULL 값으로 넘어오는 경우에 대한 예외 처리 필요
4 오류 발생 시[ | ]
- 윈도우
- 0x00000000 주소를 참조 했다는 오류 메시지 발생
5 같이 보기[ | ]
6 참고[ | ]
편집자 John Jeong Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.