分段故障 - 大型阵列

时间:2014-06-23 22:49:05

标签: c arrays segmentation-fault

当我尝试编译用C编写的代码时,我遇到了一个奇怪的错误。错误说明

 segmentation fault (core dumped)

在我的代码中,我有很多非常大的双数组(比如大小接近100,000的大小)。我初始化一个双精度数组,当我尝试在相同大小之后立即初始化一个数组(大约100,000个长度)时,它给出了分段错误错误。奇怪的是,它取决于阵列的大小。例如,如果我

 double arr[70000];       

它给了我分段错误但是

 double arr[60000];     

没有给我错误。如果有帮助的话,我在linux机器上运行我的代码。我真的需要很多不同的非常大的双阵列。发生了什么事?

1 个答案:

答案 0 :(得分:3)

你遇到过“Stack Overflow”;基本上,你已经耗尽了你的程序可用的堆栈空间。

如果你在堆上分配数组(在堆存储中),你可能会没事的。

使用C,您可能会使用 malloc 指令来分配内存。

当然,您会记得使用 free 指令在完成内存后返回内存。