我整天都在试图找出这两个阵列产生分段错误的原因。
我可以注释掉一个并且程序运行但是同时使用它们会导致它崩溃。他们可能在记忆中重叠吗?
我很无能为力,任何帮助都会受到赞赏。
#include <iostream>
int main()
{
int y = 3823;
int x = 10;
int z = 64;
double foo[y][x];
double bar[y][z];
foo[2][2] = 0;
bar[2][2] = 2;
std::cout << foo[2][2] << std::endl;
std::cout << bar[2][2] << std::endl;
return 0;
}
答案 0 :(得分:4)
你试图在堆栈上分配大约2兆字节。这是很多记忆。
您应该考虑某种形式的动态分配,它不会在堆栈上分配这些数组。
答案 1 :(得分:3)
当我运行它时,该程序不会崩溃(两个数组都没有注释)。
此程序只需输入main
就需要超过2,263,216个字节的堆栈。默认情况下,您的操作系统很可能不提供这么多堆栈。你可以提高限制,但不知道你在使用什么操作系统,我不能确切地告诉你如何。