프로그래밍

 3198, 1/160 회원가입  로그인  
   smile_mut
   [C언어] malloc

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2988 [복사]


int i;
int *p;
p = malloc(sizeof(i));
printf("%d\n", (int)sizeof(p));

를 컴파일 하면 p위 값이 8로 나오는데 원래
int의 값이 4바이트 니까 4 로 나와야 되는거
아닌가요?

  Hit : 4167     Date : 2011/05/09 07:26



    
clockmaker 애초에 저거 컴파일이 되는 코드인가요? 안 될 거 같은데요 ㅇ_ㅇ 2011/05/09  
smile_mut 앞에 include 와 main 은 생략 했읍니다. 아이폰
으로 쓰는거라 시간이 오래걸려서요
2011/05/09  
wsh 4가 나오는데요..
일단 코드가 좀 잘못된듯 컴파일햇는데 에러가나오네요
malloc함수 앞에 (int *) 이걸써주셔야합니다.

일단 제가 일단 님코드를 가지고 컴파일햇으때 에러가나오는데요
에러는 malloc함수의 리턴형이 void *형니다 그런데 p는 int * 형이구요 그래서 형이 맞지 안아서,
형 변환을 해줘야 합니다.
2011/05/09  
Pang 어쩌면 smile님의 운영체제가 64비트일수도 있지않을까요??
64비트 int값이 8비트인거같던대
2011/05/09  
$Zero sizeof 함수를 사용한 대상은 포인터입니다.

포인터의 경우 32비트 시스템에서 4바이트의 크기를 가지며 64비트 시스템에서 8바이트의 크기를 가집니다.

포인터를 sizeof 하셨으니 당연히 8바이트가 나오지요 .
2011/05/09  
Prox $Zero // 와우.. 깔끔한설명 감사합니다 ㅋㅋ 글쿤요 2011/05/09  
clockmaker 흠.. 저도 타입 캐스팅 얘기 한 거였는데..;;
라이브러리와 main 생략한 거야 보면 알죠.
제가 좀 멍청하긴 한데 그 정도는 아닙니다 ㅎ;
2011/05/09  
smile_mut clockmaker 님 죄송 ㅋㅋ
$zero님 감사합니다 :)
2011/05/12