我正在爲C中的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 ...;'from'' –
因爲int是32位,所以指針是64位。嘗試使用long int。嘗試檢查sizeof(int)和sizeof(void *) –