sizeof 에 대한 질문

bloody의 이미지

어제 코딩을 하다가 황당한 것을 발견했습니다.

char *abc1 = new char[100];
char abc2[100];

sizeof(abc1)을 했더니 4가 나오고
sizeof(abc2)를 했더니 정상적으로 100이 나오더군요.

처음보는 상황인데 원래부터 이랬나요?

테스트 환경은 VS2005 c++입니다.

Hyun의 이미지

abc1은 포인터고 abc2는 배열이어서 그런게 아닐까요?


나도 세벌식을 씁니다
mirr187의 이미지

네.. 정상입니다.. Hyun 님 말대로죠..;;
해당 부분은 코딩시 착각하기 쉬운 부분중 하나일수도 있습니다... 메모리 할당하고 체크할때도 그렇고 sizeof 관련해서
착각하여 논리 조건에 sizeof ()를 사용할 경우 문제가 발생할 소지가 매우 높죠..;;

aruee의 이미지

runtime 에 실행되는 녀석이 아닌걸로 알고 있습니다.

빌드될 당시에 계산할 수 있는 녀석이 상수로 치환되서 들어가니, 변수 type만으로 크기를 계산하게 되겠죠.