반응형
C 또는 C++에서 malloc 함수를 사용할 경우 아래와 같이 사용할 수 있다.
int* ptr = (int*)malloc(sizeof(int)*5);
*ptr = 4;
하지만 위 코드는 아래와 같이 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
'C,C++ > Error & Warning' 카테고리의 다른 글
[C++] 함수 템플릿 특수화 관련 링크 에러 | LNK1169, LNK2005 (0) | 2020.03.02 |
---|---|
[C++] LNK2001, LNK1120 링크 오류 (static 관련) (0) | 2020.02.04 |
[C++] C2572 컴파일러 오류. redefinition of default argument (0) | 2020.01.11 |
[C++] LNK2019, LNK1120 클래스 템플릿 사용 시 링크 오류 (0) | 2019.11.28 |
[C++] typename 키워드 | C2760, C7510 (0) | 2019.11.25 |
댓글