compiler-errors - 在 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
数组有效,但我不知道为什么它会给出那个错误。
解决方案
由于数组非常大,您可能会用完堆栈空间。(所以这是一个非常适合堆栈溢出的问题:-))
将声明移出主函数,因此将数组放入普通内存中。
在这里查看更多信息:
https://craftofcoding.wordpress.com/2015/12/07/memory-in-c-the-stack-the-heap-and-static/
推荐阅读
- kubernetes - 使用 nvim-lspconfig 为自动完成设置 yaml.schema “kubernetes”
- typescript - RxJS switchMap/mergeMap 导致 Obserable
- python - 在 docker 容器内设置环境路径
- php - I'm getting an error when trying to make an SMTP connection with PHP?
- c++ - 如何正确地将输入读入动态分配的对象数组
- c# - 使用 C# 读取 Windows Embedded Automotive 生成的二进制文件
- javascript - 调用 this.state = { key : this.props.xxx.id } 时变得未定义?
- numpy - 以 30Hz 的频率将动态变化的 numpy 数组实时渲染为屏幕上的位图
- ffmpeg - FFMPEG - 填充图像底部
- python - 加入单个 Pandas DataFrame 中的列