0

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

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

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

4

2 回答 2

4

“堆”和“栈”只是C++ 标准规定的一般概念的实际实现。

该标准不关心您存储对象的位置,它关心这些对象的生命周期,因此它谈论“自动存储持续时间”。

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

对于许多常见用法,两者可以互换,而不会真正引起混淆。堆栈上的对象具有自动存储持续时间,在谈论“自动存储持续时间”时通常会想到它们。

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

于 2011-06-29T17:41:13.433 回答
1

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

于 2011-06-29T17:40:05.440 回答