首页 > 解决方案 > 在 C++ 中声明两个 512x512 二维数组时出现分段错误

问题描述

我的main()职能是——

int main(int argc, char *argv[]) {
    std::cout << "Hello, World!" << std::endl;
    int real[512][512] = {0};
    int imaginary[512][512] = {0};
    return 0;
}

它给了我segmentation fault,但如果我注释掉其中一个二维数组,它就可以工作。我正在处理图像并且以前的256x256数组有效,但我不知道为什么它会给出那个错误。

标签: compiler-errorssegmentation-fault

解决方案


由于数组非常大,您可能会用完堆栈空间。(所以这是一个非常适合堆栈溢出的问题:-))

将声明移出主函数,因此将数组放入普通内存中。

在这里查看更多信息:

https://craftofcoding.wordpress.com/2015/12/07/memory-in-c-the-stack-the-heap-and-static/


推荐阅读