当我尝试编译用C编写的代码时,我遇到了一个奇怪的错误。错误说明
segmentation fault (core dumped)
在我的代码中,我有很多非常大的双数组(比如大小接近100,000的大小)。我初始化一个双精度数组,当我尝试在相同大小之后立即初始化一个数组(大约100,000个长度)时,它给出了分段错误错误。奇怪的是,它取决于阵列的大小。例如,如果我
double arr[70000];
它给了我分段错误但是
double arr[60000];
没有给我错误。如果有帮助的话,我在linux机器上运行我的代码。我真的需要很多不同的非常大的双阵列。发生了什么事?
答案 0 :(得分:3)
你遇到过“Stack Overflow”;基本上,你已经耗尽了你的程序可用的堆栈空间。
如果你在堆上分配数组(在堆存储中),你可能会没事的。
使用C,您可能会使用 malloc
指令来分配内存。
当然,您会记得使用 free
指令在完成内存后返回内存。