gpt4 book ai didi

c++ - 为什么在 C++ 内存管理中,术语 "automatic"和 "dynamic"优于术语 "stack"和 "heap"?

转载 作者:IT老高 更新时间:2023-10-28 21:49:05 26 4
gpt4 key购买 nike

关于 SO 的许多问题和答案,我了解到最好将其生命周期管理为驻留在自动存储而不是堆栈中的对象。

此外,动态分配的对象不应被称为驻留在堆上,而是在动态存储中。

我知道存在自动、动态和静态存储,但从未真正理解自动堆栈和动态堆之间的区别。为什么首选前者?

我不是在问堆栈/堆是什么意思或内存管理是如何工作的。我在问为什么术语自动/动态存储优于术语堆栈/堆。

最佳答案

自动告诉我一些关于对象生命周期的信息:特别是它被自动绑定(bind)到封闭范围,并将被自动销毁> 当该范围退出时。

动态告诉我对象的生命周期不是由编译器自动控制的,而是在我的直接控制之下。

Stack是一种容器类型的重载名称,以及常见的callret指令支持的相关流行指令指针协议(protocol).由于流行的堆栈框架约定,它没有告诉我任何关于对象生命周期的信息,除非通过与 C 中对象生命周期的历史关联。另请注意,在某些实现中,线程本地存储在线程的堆栈上,但不限于任何单个函数的范围。

Heap 又是一个重载名称,表示排序容器的类型或自由存储管理系统。这不是所有系统上唯一的免费商店,也没有告诉我任何关于用 new 分配的对象的生命周期的具体信息。

关于c++ - 为什么在 C++ 内存管理中,术语 "automatic"和 "dynamic"优于术语 "stack"和 "heap"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181782/

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