6

可能重复:
什么是堆栈溢出错误?

它只是在我声明大小为 4096*1024 的大型数组时发生

First-chance exception at 0x01382e97 in nsfclient.exe: 0xC00000FD: Stack overflow.
Unhandled exception at 0x01382e97 in nsfclient.exe: 0xC00000FD: Stack overflow.

我应该怎么做才能在 Visual Studio 中声明大数组?

4

2 回答 2

10

您应该显式增加堆栈大小,以便能够在堆栈上存储更大的数组。据我记得这是使用/F选项完成的。

另一种选择是使用动态数组(使用mallocor分配new)。

编辑(感谢 Jefrrey Theobald):您还必须增加链接器中的堆栈大小,这是使用/stack选项完成的。也可以通过右键单击项目->属性->链接器->系统和setting stack commit和来设置此选项stack reserve size在此处输入图像描述

于 2012-12-29T11:02:24.877 回答
4

您没有显示任何代码,但我认为您正在堆栈上声明您的数组。尝试在堆上声明它(使用malloc)。确保free稍后再做。

char* bigArray = malloc(LARGE_SIZE);
/* use bigArray */
free(bigArray);
于 2012-12-29T11:02:09.490 回答