C++ c++;内存分配问题

C++ c++;内存分配问题,c++,memory,allocation,C++,Memory,Allocation,我正在尝试创建一个数组: int-HR[32487834] 这不是只占用大约128-130兆的内存吗? 我使用MSC++ Visual Studio 2005 SP1,它崩溃了,告诉我堆栈溢出。 < P>计算机可能有千兆字节的内存,栈不(默认情况下,我认为它是1 MB的Windows,但你可以使它更大)。 尝试使用new[]在堆上分配它,虽然您的计算机可能有千兆字节的内存,但堆栈没有(默认情况下,我认为windows上的内存约为1MB,但您可以将其增大) 尝试使用new[]在堆上分配它。默认情况

我正在尝试创建一个数组:
int-HR[32487834]
这不是只占用大约128-130兆的内存吗?

我使用MSC++ Visual Studio 2005 SP1,它崩溃了,告诉我堆栈溢出。

< P>计算机可能有千兆字节的内存,栈不(默认情况下,我认为它是1 MB的Windows,但你可以使它更大)。
尝试使用
new[]

在堆上分配它,虽然您的计算机可能有千兆字节的内存,但堆栈没有(默认情况下,我认为windows上的内存约为1MB,但您可以将其增大)


尝试使用
new[]
在堆上分配它。默认情况下,堆栈没有那么大。您可以使用设置堆栈大小

如果不使用此选项,堆栈大小 默认值为1 MB。数字参数 可以是十进制或C语言 符号论点的范围可以是 1到可接受的最大堆栈大小 通过链接器。链接器向上取整 将指定值精确到4 字节。/F和数字之间的空格 是可选的

您还可以将用于可执行文件的

但很可能你应该把你的问题分成几个部分,而不是一下子做所有的事情。你真的需要一次记住所有的东西吗


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

默认情况下,堆栈没有那么大。您可以使用设置堆栈大小

如果不使用此选项,堆栈大小 默认值为1 MB。数字参数 可以是十进制或C语言 符号论点的范围可以是 1到可接受的最大堆栈大小 通过链接器。链接器向上取整 将指定值精确到4 字节。/F和数字之间的空格 是可选的

您还可以将用于可执行文件的

但很可能你应该把你的问题分成几个部分,而不是一下子做所有的事情。你真的需要一次记住所有的东西吗


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

使用向量-数组数据将位于堆上,当您离开函数或块时,仍然会自动清理数组:

std::vector<int> HR( 32487834);
std::vector HR(32487834);

使用向量-数组数据将位于堆上,而当您离开函数或块时,仍然会自动清理数组:

std::vector<int> HR( 32487834);
std::vector HR(32487834);

noooooo。使用一个RAII类,该类将在堆上进行分配,但具有定义的生存期,并且是异常安全的。为什么堆栈在默认情况下只有~1MB?我确实使用了新的接线员,它起了作用。那么为什么可以在堆上而不是堆栈上分配呢?@Martin York:使用向量会有帮助@马丁·约克:你是对的,如果可能的话,最好使用
std::vector
和RAII,但我的主要观点是应该在堆上分配它。因为OP说他在尝试创建一个数组,所以我建议这样做。使用一个RAII类,该类将在堆上进行分配,但具有定义的生存期,并且是异常安全的。为什么堆栈在默认情况下只有~1MB?我确实使用了新的接线员,它起了作用。那么为什么可以在堆上而不是堆栈上分配呢?@Martin York:使用向量会有帮助@马丁·约克:你是对的,如果可能的话,最好使用
std::vector
和RAII,但我的主要观点是应该在堆上分配它。因为OP说他正在尝试创建一个数组,所以我建议。不仅堆栈大小,而且堆栈帧大小与这些巨大的大小有关(尽管我不确定DevStudio上的堆栈帧限制)。不仅堆栈大小,而且堆栈帧大小也与这些巨大的大小有关(虽然我不确定DevStudio上的堆栈帧限制)。是否有任何理由使用数组而不是STL数组(向量,列表…)?您甚至可以创建自己的迭代器类!是否有任何理由使用数组而不是STL数组(向量,列表…)你甚至可以创建自己的迭代器类!有什么原因导致这种奇怪的空间约定吗?(对不起,但它会让我的眼睛流血,我对它的用途很好奇。)(x)太多的空白,(x)是不够的。有什么原因导致这种奇怪的空间约定吗?(对不起,但它会让我的眼睛流血,我对它的用途很好奇。)(x)是太多的空白和(x)是不够的。