Так у меня есть этот сложный класс, и я хочу, чтобы иметь 2d массив комплексных чисел это часть кода не весь кодстека в программе C++
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];
}
поэтому линия комплекс G [ ВЫСОТА ШИРИНА]; это линия, которая вызывает проблему, любая идея, почему?
Предполагая, что 8-байтовый двойной, это 1 МБ стекового хранилища для 'G', что обычно является общим пределом. – chris
Потому что вы переполняете стек 65536 объектов 'Complex'. Это действительно не ... сложный ... предмет для понимания. –
Лучше не выделять большие массивы в стеке - используйте 'malloc' - и, возможно, создайте функцию доступа как часть класса, чтобы упростить индексирование. – Floris