矢量分配:静态与动态

时间:2012-05-19 18:32:27

标签: c arrays allocation

我在这里写了一些C代码,我遇到了一个问题:

我有一个自定义类型的数组。我想为这个数组添加一个大小:

typedef struct reg Reg;
Reg myArray[958279];

当我运行程序时出现分段错误。

然后我尝试使用malloc,它动态分配存储空间,令我惊讶的是它起作用了:

Reg *myArray = (Reg*)malloc(sizeof(Reg)*958279);

所以我假设静态表单的数组声明必须有一些大小限制。

在某个地方有没有提到这个事实?或者我对我的问题完全错了吗?

1 个答案:

答案 0 :(得分:2)

第一段代码中的数组可能是在堆栈上分配而不适合。堆栈通常具有固定大小,您不能在堆栈上分配大对象。正如您所发现的,解决方案是从堆中分配。