stack overflow error in C++ program(C++程序中的堆栈溢出错误)
问题描述
所以我有这个复杂的类,我想要一个复数的二维数组,这是代码的一部分而不是全部代码
So i have this complex class , and i want to have an 2d array of complex numbers this is part of the code not all the code
class Complex {
public:
/* construction/destruction */
Complex(double r, double i) { this->r = r; this->i = i; }
Complex() { r=0.0; i=0.0; }
~Complex() { r=0.0; i=0.0; }
/* operations */
Complex operator+(Complex &c) { return Complex( r+c.r, i+c.i ); }
double r, i;
};
int main()
{
const int HEIGHT = 256;
const int WIDTH = 256;
Complex G[HEIGHT][WIDTH];
}
所以行 Complex G[HEIGHT][WIDTH];是导致问题的线路,知道为什么吗?
so the line Complex G[HEIGHT][WIDTH]; is the line that causes the problem , any idea why ?
推荐答案
Visual Studio 默认为 1MB 堆栈大小,看起来像:
Visual studio defaults to 1MB stack size, it looks like:
Complex G[HEIGHT][WIDTH];
大约 1MB,您可以使用 /F 并且文档说(强调我的):
will be just about 1MB, you can modify this using /F and the document says (emphasis mine):
如果没有此选项,堆栈大小默认为 1 MB.number 参数可以是十进制或 C 语言表示法.该参数的范围可以从 1 到链接器接受的最大堆栈大小.链接器将指定的值向上舍入到最接近的 4 个字节./F 和数字之间的空格是可选的.
Without this option the stack size defaults to 1 MB. The number argument can be in decimal or C-language notation. The argument can range from 1 to the maximum stack size accepted by the linker. The linker rounds up the specified value to the nearest 4 bytes. The space between /F and numberis optional.
最明显的替代方法是通过new 或std::vector.
The most obvious alternative would be to use dynamic memory allocation via new or std::vector.
Visual Studio 据我所知实际上有 较小的默认堆栈大小之一:
Visual Studio as far as I know actually has one of the smaller default stack sizes:
platform default size
=====================================
SunOS/Solaris 8192K bytes
Linux 8192K bytes
Windows 1024K bytes
cygwin 2048K bytes
Mac OS X 8192K bytes
这篇关于C++程序中的堆栈溢出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:C++程序中的堆栈溢出错误
基础教程推荐
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 从 std::cin 读取密码 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- Windows Media Foundation 录制音频 2021-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01