할당을 위해 malloc
및 free
에 대한 고유 함수를 작성 중입니다. C sbrk()
래퍼 기능을 활용해야합니다. 내가 이해 한대로 sbrk()
은 프로그램의 데이터 공간을 인수로 전달 된 바이트 수만큼 증가시키고 프로그램 중단 위치를 가리 킵니다. 나는 다음과 같은 코드가있는 경우int에 대한 포인터 캐스팅
는 :
#define BLOCK_SIZE 20
int x;
x = (int)sbrk(BLOCK_SIZE + 4);
을 나는 컴파일러 오류 warning: cast from pointer to integer of different size
를 얻을. 왜 이것이 어쨌든 sbrk()
이 가리키는 주소를 int
으로 전송할 수 있습니까?
'void * x;'를 사용하지 않는 이유가 있습니까? 정수형을 정말로 원한다면'intptr_t x = (intptr_t) sbrk ...;'에서' ' –
int는 32 비트이므로 포인터는 64 비트입니다. long int를 사용해보십시오.sizeof (int)와 sizeof (void *)를 체크해라. –