在Visual Studio 2010中创建字节数组时获取堆栈溢出

时间:2014-10-16 14:25:52

标签: c++ visual-studio-2010 visual-c++

我创建了一个VC ++控制台应用程序(HelloWorld)。在那里我创建了一个大小为1316779的字节数组。它在构建应用程序时工作正常。无论如何调试它给出的应用程序

  

HelloWorld.exe中0x00969167处的未处理异常:0xC00000FD:堆栈溢出。

但是当我将尺寸改为1010000时,它运作良好。

我的要求是创建一个字节数组大小为1316779.即字节myArray [1316779];

我在使用奔腾处理器和2GB内存的XP操作系统下工作。

3 个答案:

答案 0 :(得分:4)

1316779 bytes = 1.31 MB

MSVC默认设置为1 MB stack limit

  

/ F - 如果没有此选项,堆栈大小默认为1 MB。

您需要增加该限制或减少堆栈大小(例如,使用堆分配)。我也不会依赖1010000(1.01)。

答案 1 :(得分:1)

将本地阵列定义为具有静态存储持续时间

static byte myArray[1316779];

否则使用标准类std::vector

答案 2 :(得分:0)

显然,1316779个字节比堆栈大,你可以把它搞砸了。因此,在堆上创建1316779字节并将句柄传递给堆栈中的句柄:

std::vector<byte> myHugeAmountofBytes;
myHugeAmountofBytes.reserve(1316779);
// put elemnts into myHugeAmountofBytes

myHugeAmountofBytes现在可以通过堆栈传递而不会溢出。