반응형
이번 글을 통해 배워갈 내용
- C++ 에서 new 선언 후에 nullptr 체크를 해줘야 하는지 여부
실무에서 작업을 하다보면 new 로 메모리 할당 후에 nullptr 체킹을 하는 프로그래머들을 가끔 봅니다.
c++에서 동적으로 메모리를 할당 하는 new 연산자는 많은 분들이 씁니다만
new 연산자를 사용하고 바로 다음에 nullptr 체크를 하는게 과연 올바른 방법일까요?
예시를 보여드리겠습니다.
#include <iostream>
using namespace std;
int main()
{
int* pMyInt = new int;
if(pMyInt == nullptr)
{
cout<<"nullptr";
}
else
{
cout<<"not nullptr";
}
return 0;
}
위와 같은 코드는
제 컴파일러에서
not nullptr를 출력합니다.
이는 new 를 통해 메모리가 할당되었기 때문에 nullptr가 아니기 때문입니다.
결론은
C++에서
고대 석기시대 컴파일러를 쓰는게 아니면
new를 사용해서 메모리를 할당하면
nullptr가 나오지 않기 때문에
nullptr 체킹을 해주지 않아도 된다고 대부분의 영어권 전문가 들이 말합니다.
아래 참조 및 인용 참조
참조 및 인용
https://www.cs.technion.ac.il/users/yechiel/c++-faq/new-never-returns-null.html
https://en.cppreference.com/w/cpp/language/new
C++ Primer
https://codemasterkimc.tistory.com/35
반응형
'C++ > C++ 기타' 카테고리의 다른 글
C++ 타입캐스팅에 대한 생각과 팁 (0) | 2021.08.20 |
---|---|
C++에서 string을 int, uint혹은 long으로 변경하기 (1) | 2021.07.21 |
C++ 열거형의 간단한 정의와 예시 (1) | 2021.07.15 |
C++ 배열없이 데이터 집약적으로 출석 저장해보기 (1) | 2021.07.12 |
C++ 맵에 대한 정의, 키로값찾기, 값으로키찾기, 시간복잡도 (1) | 2021.07.08 |