内存管理-堆/堆栈的C++标准术语

memory management - C++ standard terminology for heap/stack

本文关键字:C++ 标准 术语 堆栈 管理 -堆 内存      更新时间:2023-10-16

应该使用的术语似乎存在一些不确定性。似乎有两种不同的观点:

  1. 有些人更喜欢使用堆和堆栈来表示字节的位置
  2. 其他人坚持认为,这些"堆"answers"堆栈"术语不应该在c++中使用,而是更喜欢"自动存储持续时间"术语

但显然,程序员使用一组术语,而标准使用另一组术语。但是应该使用什么术语呢?为什么?还有问题是他们的意思不同吗?但在freenode中的##C++通道中使用堆栈/堆项时,似乎一直存在分歧。我们现在已经结束了持续时间=位置,但我们仍然应该决定什么是首选术语。

"heap"answers"stack"只是C++标准指定的通用概念的实际实现。

该标准并不关心您将对象存储在哪里,而是关心这些对象的生存期,因此它谈到了"自动存储持续时间"。

但编译器通常使用堆栈作为实现此功能的工具之一。然而,正如评论中所指出的,并不是每个具有自动持续时间的对象都位于堆栈上。类成员具有自动存储持续时间,无论所属对象是否在堆栈上。

对于许多常见用法,两者可以互换,而不会真正造成混淆。堆栈上的对象具有自动存储持续时间,当谈到"自动存储持续期"时,通常也会想到它们。

只要你不声称某个东西在堆上时是堆栈分配的,我就不会太在意你用的是哪个术语。

Stack是一个对象存储的实现,具有自动存储持续时间(一个抽象概念)。堆和动态存储持续时间也是如此。