c++ 内存分配问题

发布于 2024-07-29 06:38:48 字数 131 浏览 8 评论 0原文

我正在尝试创建一个数组: int HR[32487834]; 这不是只占用大约 128 - 130 MB 内存吗? 我正在使用 MS c++ Visual Studios 2005 SP1,它崩溃并告诉我堆栈溢出。

im trying to create an array:

int HR[32487834];
doesn't this only take up about 128 - 130 megabytes of memory?
im using MS c++ visual studios 2005 SP1 and it crashes and tells me stack overflow.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝色星空 2024-08-05 06:38:48

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

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

Use a vector - the array data will be located on the heap, while you'll still get the array cleaned up automatically when you leave the function or block:

std::vector<int> HR( 32487834);
水波映月 2024-08-05 06:38:48

虽然你的计算机可能有 GB 的内存,但堆栈却没有(默认情况下,我认为 Windows 上的内存约为 1 MB,但你可以将其增大)。

尝试使用 new [] 在堆上分配它。

While your computer may have gigabytes of memory, the stack does not (by default, I think it is ~1 MB on windows, but you can make it larger).

Try allocating it on the heap with new [].

在巴黎塔顶看东京樱花 2024-08-05 06:38:48

默认情况下堆栈没有那么大。 您可以使用 /F 编译器开关< /a>.

如果没有此选项,堆栈大小
默认为 1 MB。 数字参数
可以是十进制或C语言
符号。 参数范围可以是
1 到可接受的最大堆栈大小
由链接器。 链接器四舍五入
指定值最接近 4
字节。 /F 和数字之间的空格
是可选的。

您还可以使用 /STACK 链接器选项对于可执行文件

但是您可能应该将问题分成几个部分,而不是一次完成所有事情。 您真的需要一次性使用所有内存吗?

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

The stack is not that big by default. You can set the stack size with the /F compiler switch.

Without this option the stack size
defaults to 1 MB. The number argument
can be in decimal or C-language
notation. The argument can range from
1 to the maximum stack size accepted
by the linker. The linker rounds up
the specified value to the nearest 4
bytes. The space between /F and number
is optional.

You can also use the /STACK linker option for executables

But likely you should be splitting up your problem into parts instead of doing everything at once. Do you really need all that memory all at once?

You can usually allocate more memory on the heap than on the stack as well.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文