我一直在阅读有关sizeof,malloc和malloc_size的内容,但由于某种原因,我无法在目标c中正常工作。
我要做的是动态分配内存,然后检查指针的大小。
我试过这样做:
void *pointer = malloc( sizeof(void) * 8 );
long test1 = malloc_size(pointer); // Its value is 16
long test2 = sizeof(pointer); // Its value is 8
下面的链接回答完全相同的问题,但它对我不起作用。
修改 我也尝试过使用
char *malloc( sizeof(char) * 8)
但它也没有用。
答案 0 :(得分:1)
malloc_size
正在返回正确的答案 - malloc
返回至少与您请求的大小相同的块,但它可能(稍微)一些。这只是动态内存管理方式的一个方面,它与磁盘文件由分配块组成的方式相似。对64位Intel的快速测试表明,malloc的分配单元大概是16个字节。
答案 1 :(得分:0)
pointer
的类型为*,因此无论对pointer
进行malloced,sizeof(pointer)
都应该是固定值,它是4(32位sys)或8(64位sys)