我创建了一个VC ++控制台应用程序(HelloWorld)。在那里我创建了一个大小为1316779的字节数组。它在构建应用程序时工作正常。无论如何调试它给出的应用程序
HelloWorld.exe中0x00969167处的未处理异常:0xC00000FD:堆栈溢出。
但是当我将尺寸改为1010000时,它运作良好。
我的要求是创建一个字节数组大小为1316779.即字节myArray [1316779];
我在使用奔腾处理器和2GB内存的XP操作系统下工作。
答案 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
现在可以通过堆栈传递而不会溢出。