在内存分配后获取指针的大小

时间:2013-06-14 08:11:19

标签: objective-c malloc sizeof

我一直在阅读有关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)

但它也没有用。

2 个答案:

答案 0 :(得分:1)

malloc_size正在返回正确的答案 - malloc返回至少与您请求的大小相同的块,但它可能(稍微)一些。这只是动态内存管理方式的一个方面,它与磁盘文件由分配块组成的方式相似。对64位Intel的快速测试表明,malloc的分配单元大概是16个字节。

答案 1 :(得分:0)

pointer的类型为*,因此无论对pointer进行malloced,sizeof(pointer)都应该是固定值,它是4(32位sys)或8(64位sys)