我试图创建一个数组:
int HR[32487834];
这不仅占用了大约128 - 130兆字节的内存吗?
即时通讯使用MS c ++ visual studios 2005 SP1,它崩溃并告诉我堆栈溢出。
答案 0 :(得分:11)
使用向量 - 数组数据将位于堆上,而当您离开函数或块时,仍然会自动清理数组:
std::vector<int> HR( 32487834);
答案 1 :(得分:7)
虽然您的计算机可能有几千兆字节的内存,但堆栈却没有(默认情况下,我认为它在Windows上大约为1 MB,但您可以将其放大)。
尝试使用new []
在堆上分配它。
答案 2 :(得分:3)
默认情况下,堆栈不是那么大。您可以使用/F compiler switch设置堆栈大小。
没有此选项的堆栈大小 默认为1 MB。数字参数 可以是十进制或C语言 符号。争论的范围可以从 1接受最大堆栈大小 由链接器。链接器向上舍入 指定的值为最接近的4 字节。 / F和数字之间的空格 是可选的。
您还可以将/STACK linker option用于可执行文件
但是你可能应该将你的问题分成几部分,而不是一次完成所有事情。你真的需要所有那些记忆吗?
您通常可以在堆上分配比堆栈更多的内存。