#include <stdlib.h>
#include <stdio.h>
#define MAX_NUM 65536
struct Test{
int t;
char args[16][65];
};
int main(int argc, char ** argv) {
//
struct Test *array = malloc(MAX_NUM * sizeof(struct Test*));
printf("%d", sizeof(*array));
for(int i = 0; i < sizeof(*array); i++) {
printf("%d", i);
printf(" ");
array[i].t = 0;
}
array[421].t = 5;
printf("%d", array[421].t);
free(array);
return 0;
}
你好,我如何确定在 malloc 后我有多少个数组槽?当我打印 sizeof(*array) 时,我得到数字 1044,但是当我尝试运行循环并在每个槽中设置测试值时,我在段错误之前只得到 282。 sizeof 和 malloc 有什么区别?为什么我的数组的大小为 1044 时只接受最大 282 的值?为什么我可以在 421 处编辑一个插槽,但它在我的循环中出现高达 282 的段错误?谢谢
最佳答案
我想你的意思是
struct Test *array = malloc(MAX_NUM * sizeof(struct Test));
还是我遗漏了什么?
关于c - 分配数组后,我如何知道数组中有多少个插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21615874/