当我尝试编译用 C 编写的代码时出现奇怪的错误。错误说
segmentation fault (core dumped)
在我的代码中,我有很多非常大的 double 组(长度接近 100,000)。我初始化了一个 double 组,当我尝试在之后立即初始化一个相同大小(大约 100,000 长度)的数组时,它给了我段错误。奇怪的是,这取决于数组的大小。例如,如果我这样做
double arr[70000];
它给了我分割错误但是
double arr[60000];
没有给我错误。如果有帮助,我正在 linux 机器上运行我的代码。我真的需要很多不同的非常大的双数组。这是怎么回事?
最佳答案
您遇到了“堆栈溢出”;基本上,您已经用尽了程序可用的堆栈空间。
如果您在堆上(在堆存储中)分配数组,您可能没问题。
对于 C,您可能会使用 malloc
指令来分配内存。
当然,您会记得使用 free
指令在完成后归还内存。
关于c - 段错误 - 大数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375801/