-2

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

但它也没有用。

4

2 回答 2

1

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

于 2013-06-14T09:04:13.980 回答
0

pointer是 * 类型,所以无论分配什么内存pointersizeof(pointer)都应该是固定值,它是 4(32 位系统)或 8(64 位系统)。

于 2013-06-14T08:17:58.660 回答