“默认堆大小为 1 MB”。那我怎么能再malloc()呢,我是不是误解了“堆”这个词?
在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为堆可以增长,而堆栈是固定的。
1MB
只是堆的初始大小。That's because the heap can grow whereas the stack is fixed.
1MB
is just the initial size of the heap.