我收到这个错误
每当我在使用 Microsoft Visual C++ 2010 Express 编译的代码中输入任何大于以下数字的数字时:
int size = 276447232;
不过,根据这次 谈话,这个或那个,我 应该可以在遇到任何问题之前上到2147483646,不是吗?
天空
程序试图分配太多的堆栈空间:
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++ 中更改堆栈大小的线程。