1

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

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

typedef struct reg Reg;
Reg myArray[958279];

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

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

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

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

在某处有没有提到这个事实?还是我对我的问题完全错误?

4

1 回答 1

2

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

于 2012-05-19T18:35:42.277 回答