1

我收到这个错误

错误

每当我在使用 Microsoft Visual C++ 2010 Express 编译的代码中输入任何大于以下数字的数字时:

int size = 276447232;

不过,根据这次 谈话这个那个,我 应该可以在遇到任何问题之前上到2147483646,不是吗?

天空

4

1 回答 1

1

程序试图分配太多的堆栈空间:

char *outputGwb = char[size]; // array is created "on the stack"

使用malloc(或new在 C++ 中)从分配内存。确保稍后free(或delete在 C++ 中)内存;只是不要混合分配/解除分配策略。

char* outputGwb = new char[size]; // C++: note use of the "new" keyword
char* outputGwb = malloc(size);   // C:   note no cast needed in a C compiler

因此,此问题与特定资源的最大大小有关,与整数值可以表示的最大数量无关

请参阅堆栈和堆是什么以及在哪里?有关两个内存分配区域之间的解释。此外,虽然我不一定推荐它,但这里有一个讨论如何在 Visual C++ 中更改堆栈大小的线程。

于 2012-08-21T20:39:20.467 回答