작성
·
152
0
1. StatInfo* pointer; 이렇게 선언만 해두는 것과 StatInfo* pointer = nullptr; 은 아예 다른 경우인가요? 가리키는 것이 없다는 것을 정확히 명시하기 위해 도입된 문법인가요?
2. StatInfo* pointer = nullptr; 이 경우도 포인터 변수를 초기화 했다고 볼 수 있는건가요?
답변 1
1
nullptr은 사실상 숫자 0이라고 생각하시면 됩니다.
다만 0은 일반 정수에 사용하는 것이고 nullptr은 포인터 전용입니다.
C++에서 StatInfo* pointer; 이렇게 선언만 해두면
사용할 메모리 공간은 할당되긴 하지만,
특별히 안의 내용물을 초기화 하진 않습니다.
만약 그 위치에 다른 값 (ex. 0x12345678)이 있었다면, 문제가 될 소지가 있겠죠.
보통 특정 포인터가 유효한지 체크할 때 nullptr (0)과 비교를 하는데
0x12345678이 있었으면 정상적인 포인터인 마냥 행세를 할 수가 있게 됩니다.
감사합니다 !