为什么我会丢失字节?

时间:2016-03-15 17:46:35

标签: c

我只是想在C中动态声明一个数组 代码如下:

*****.********* start *****.*********

打印结果给我:

int maxSize = 3;
int *answer;
answer = malloc(maxSize * sizeof(int));
printf("this is max size: %d\n", maxSize);
printf("this is the mult result: %d\n", maxSize * sizeof(int));
printf("size of answer in bytes: %d\n", sizeof(answer));
printf("size of the answer array: %d\n", sizeof(answer) / sizeof(answer[0]));

我不认为这是一个架构的事情(而不是我没有经验),但我在Macbook Pro上运行它。

我不明白为什么malloc只为整数数组分配8个字节而不是12个字节。

1 个答案:

答案 0 :(得分:1)

Sizeof(answer)返回内存中变量answer的大小,与sizeOf(int *)相同。由于您的计算机体系结构是64位,因此指针的大小为8个字节,这是您的结果。你的计算机确实分配了12个字节,但你真的没办法验证它。