我在这里写了一些C代码,我遇到了一个问题:
我有一个自定义类型的数组。我想为这个数组添加一个大小:
typedef struct reg Reg;
Reg myArray[958279];
当我运行程序时出现分段错误。
然后我尝试使用malloc,它动态分配存储空间,令我惊讶的是它起作用了:
Reg *myArray = (Reg*)malloc(sizeof(Reg)*958279);
所以我假设静态表单的数组声明必须有一些大小限制。
在某个地方有没有提到这个事实?或者我对我的问题完全错了吗?
答案 0 :(得分:2)
第一段代码中的数组可能是在堆栈上分配而不适合。堆栈通常具有固定大小,您不能在堆栈上分配大对象。正如您所发现的,解决方案是从堆中分配。