본문 바로가기
C,C++/Error & Warning

[C/C++] 메모리 동적할당 시 malloc을 사용한다면 / dereferencing NULL pointer, Warning C6011

by woohyeon 2019. 11. 24.
반응형

C 또는 C++에서 malloc 함수를 사용할 경우 아래와 같이 사용할 수 있다.

int* ptr = (int*)malloc(sizeof(int)*5);
*ptr = 4;


하지만 위 코드는 아래와 같이 C6011 경고를 발생시킨다.

Warning C6011 

 Dereferencing NULL pointer 'ptr'.
널 포인터 ptr을 역참조하고 있다라는 뜻이다.

malloc 함수는 메모리 할당에 실패하면 null을 반환하는데 (ex. 메모리 공간이 부족한 경우 )
이 경우 ptr이 null을 가지기 때문에 올바르지 않은 메모리 위치(null)에 접근하는 것을 막기위해 경고를 띄우는 것이다.

올바른 사용법은 다음과 같이 포인터 변수가 null인지 확인 후 사용한다.

경고가 나타나지 않는다.

 

C++에서는 웬만하면 메모리 동적할당 시 malloc보단 new 연산자 사용을 권장한다.

참고
https://docs.microsoft.com/ko-kr/visualstudio/code-quality/c6011?view=vs-2019




댓글