c - 段错误 - 大数组

标签 c arrays segmentation-fault

当我尝试编译用 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/

相关文章:

python - "Less/greater than"N维和(N-k)维numpy数组的比较

javascript - 高效地处理 Javascript 中的数组

带有对自由函数调用的 C 预处理器声明

c - 使用MPI的不同大小的散布矩阵 block

c - C和linux中的虚拟地址分配

linux - 使用汇编应用程序关闭 Linux 时出现段错误

c - 使用 strtok_r 时出现段错误

c - _Generic assoc-list 中的函数指针类型是否没有按预期工作?

c++ - 创建数组 C++ 的深拷贝

c - 使用 main() 函数递归