어제 코딩을 하다가 황당한 것을 발견했습니다.
char *abc1 = new char[100]; char abc2[100];
sizeof(abc1)을 했더니 4가 나오고 sizeof(abc2)를 했더니 정상적으로 100이 나오더군요.
처음보는 상황인데 원래부터 이랬나요?
테스트 환경은 VS2005 c++입니다.
abc1은 포인터고 abc2는 배열이어서 그런게 아닐까요?
네.. 정상입니다.. Hyun 님 말대로죠..;; 해당 부분은 코딩시 착각하기 쉬운 부분중 하나일수도 있습니다... 메모리 할당하고 체크할때도 그렇고 sizeof 관련해서 착각하여 논리 조건에 sizeof ()를 사용할 경우 문제가 발생할 소지가 매우 높죠..;;
runtime 에 실행되는 녀석이 아닌걸로 알고 있습니다.
빌드될 당시에 계산할 수 있는 녀석이 상수로 치환되서 들어가니, 변수 type만으로 크기를 계산하게 되겠죠.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
원래부터 그랬던거 같은데...
abc1은 포인터고 abc2는 배열이어서 그런게 아닐까요?
네.. 정상입니다.. Hyun
네.. 정상입니다.. Hyun 님 말대로죠..;;
해당 부분은 코딩시 착각하기 쉬운 부분중 하나일수도 있습니다... 메모리 할당하고 체크할때도 그렇고 sizeof 관련해서
착각하여 논리 조건에 sizeof ()를 사용할 경우 문제가 발생할 소지가 매우 높죠..;;
sizeof 는
runtime 에 실행되는 녀석이 아닌걸로 알고 있습니다.
빌드될 당시에 계산할 수 있는 녀석이 상수로 치환되서 들어가니, 변수 type만으로 크기를 계산하게 되겠죠.
댓글 달기