gpt4 book ai didi

c++ - 为什么我们需要在堆中创建一个对象?

转载 作者:太空宇宙 更新时间:2023-11-04 15:12:41 26 4
gpt4 key购买 nike

为什么我们可以使用堆栈来满足我们的所有需求?

注意:如果在讲解的时候能举个例子就更好了,有例子更容易理解。

抱歉英语不好。

最佳答案

在实践中 call stack有限且小。典型的限制是几兆字节。相比之下,您通常可以在堆内存中分配千兆字节。

(在某些系统上,您可以将系统配置为拥有更大的堆栈;但如果需要,您需要告诉您的用户)

此外,最重要的是,调用堆栈是一个堆栈,LIFO 也是如此。 (后进先出)纪律。在许多情况下,您希望以与其分配无关的顺序释放对象,或者只是以“先分配,先销毁”的顺序释放对象(这在堆栈上是不可能的)。

考虑阅读一些关于垃圾收集的内容,例如GC handbook .它教您有关 dynamic memory allocation 的有用概念和术语(即使对于手动内存管理的 C 程序)。另请阅读 virtual address space你的过程(也可以是 this 答案,至少对于 Linux)。

动态内存分配的另一个优点是,同一个可执行文件可以在不同的计算机上运行(具有不同的资源,特别是不同数量的 RAM),但不能处理相同数量的数据。如果您必须静态分配所有内存,情况就不会是这样(例如,具有 50 GB 静态数据的 C 程序甚至无法在我的笔记本电脑上启动)。

关于c++ - 为什么我们需要在堆中创建一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48952362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com