C++程序中的堆栈溢出错误

2023-07-02C/C++开发问题
5

本文介绍了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++程序中的堆栈溢出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

无法访问 C++ std::set 中对象的非常量成员函数
Unable to access non-const member functions of objects in C++ std::set(无法访问 C++ std::set 中对象的非常量成员函数)...
2024-08-14 C/C++开发问题
17

从 lambda 构造 std::function 参数
Constructing std::function argument from lambda(从 lambda 构造 std::function 参数)...
2024-08-14 C/C++开发问题
25

STL BigInt 类实现
STL BigInt class implementation(STL BigInt 类实现)...
2024-08-14 C/C++开发问题
3

使用 std::atomic 和 std::condition_variable 同步不可靠
Sync is unreliable using std::atomic and std::condition_variable(使用 std::atomic 和 std::condition_variable 同步不可靠)...
2024-08-14 C/C++开发问题
17

在 STL 中将列表元素移动到末尾
Move list element to the end in STL(在 STL 中将列表元素移动到末尾)...
2024-08-14 C/C++开发问题
9

为什么禁止对存储在 STL 容器中的类重载 operator&()?
Why is overloading operatoramp;() prohibited for classes stored in STL containers?(为什么禁止对存储在 STL 容器中的类重载 operatoramp;()?)...
2024-08-14 C/C++开发问题
6