c ++内存分配问题

时间:2009-08-01 18:39:07

标签: c++ memory allocation

我试图创建一个数组: int HR[32487834]; 这不仅占用了大约128 - 130兆字节的内存吗? 即时通讯使用MS c ++ visual studios 2005 SP1,它崩溃并告诉我堆栈溢出。

3 个答案:

答案 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用于可执行文件

但是你可能应该将你的问题分成几部分,而不是一次完成所有事情。你真的需要所有那些记忆吗?

您通常可以在堆上分配比堆栈更多的内存。