【发布时间】:2016-03-15 17:46:34
【问题描述】:
我只是想在 C 中动态声明一个数组 代码如下:
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]));
打印结果给我:
this is max size: 3
this is the mult result: 12
size of answer in bytes: 8
size of the answer array: 2
我不认为这是一个架构问题(我缺乏经验),但我在 Macbook Pro 上运行它。
我不明白为什么 malloc 只为整数数组分配 8 个字节而不是 12 个字节。
【问题讨论】:
-
你认为它为什么会分配 12 个字节?
-
你给
maxSize一个值了吗?我没看到。 -
@George Stocker 因为我机器中的和 int 的大小是 4 个字节。由于
maxSize是 3 个字节,我希望为长度为 3 的整数数组分配足够的内存。 -
@DigitalNinja 是的,我忘了把它放在代码示例中。
-
answer是一个指针,而不是一个数组。
标签: c