“默认堆大小为 1 MB”。那我怎么能再malloc()呢,我是不是误解了“堆”这个词?

发布于 2024-12-06 01:41:07 字数 213 浏览 0 评论 0原文

在 Microsoft Visual C++ 中,我需要更多的堆栈空间。所以我进入了链接器属性并提出了它。但后来我注意到另一个属性:“堆保留大小”(链接器选项:/HEAP),并带有注释:“默认堆大小为 1 MB”。

为什么我可以在堆大小为 1MB 的情况下“在堆上”malloc 50MB?

如果我对堆栈执行相同的操作,则会出现堆栈空间不足异常。

In Microsoft Visual C++, I needed more stack space. So I went into the linker properties and raised it. But then I noticed another property: "Heap Reserve Size" (Linker Option: /HEAP) with the Note: "The default heap size is 1 MB".

How come I can malloc 50MB "on the heap" with a heap size of 1MB?

If I do the same with the stack, I get an out of stack space exception.

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

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

发布评论

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

评论(1

骑趴 2024-12-13 01:41:07

为什么我可以在堆大小为 1MB 的情况下“在堆上”malloc 50MB?

如果我对堆栈执行相同的操作,则会出现堆栈空间不足的情况
异常。

这是因为堆可以增长,而堆栈是固定的。 1MB 只是堆的初始大小。

How come I can malloc 50MB "on the heap" with a heap size of 1MB?

If I do the same with the stack, I get an out of stack space
exception.

That's because the heap can grow whereas the stack is fixed. 1MB is just the initial size of the heap.

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