0

使用すべき用語については、いくつかの不確実性があるようです。2つの異なる視点があるようです:

  1. 一部の人々は、バイトの位置を意味するためにヒープとスタックを使用することを好みます
  2. 他の人は、これらの「ヒープ」および「スタック」という用語は C++ では使用すべきではなく、代わりに「自動ストレージ期間」という用語を好むと主張しています。

しかし、明らかに、プログラマはある用語セットを使用し、標準は別の用語セットを使用します。しかし、どのような用語を使用する必要がありますか? なぜ?意味が違うという問題はまだありますか?しかし、freenode の ##C++ チャネルでスタック/ヒープ用語を使用する場合、常に意見の相違があるようです。ここで、duration!=location と結論付けましたが、それでも優先される用語を決定する必要があります。

4

2 に答える 2

4

「ヒープ」と「スタック」は、C++ 標準で指定された一般概念の実用的な実装にすぎません。

標準では、オブジェクトをどこに保存するかは気にせず、それらのオブジェクトの寿命を気にするため、「自動保存期間」について説明しています。

ただし、コンパイラは通常、これを実装するためのツールの 1 つとしてスタックを使用します。ただし、コメントで指摘されているように、自動持続時間を持つすべてのオブジェクトがスタックにあるわけではありません。所有しているオブジェクトがスタック上にあるかどうかに関係なく、クラス メンバーには自動保存期間があります。

多くの一般的な使用法では、この 2 つは実際に混乱することなく交換できます。スタック上のオブジェクトには自動保存期間があり、通常は「自動保存期間」について話すときに頭に浮かぶものです。

何かがヒープ上にあるときにスタック割り当てであると主張しない限り、どの用語を使用するかについて私はあまり気にしません。

于 2011-06-29T17:41:13.433 に答える
1

スタックは、自動保存期間 (抽象的な概念) を備えたオブジェクト ストレージの実装です。ヒープおよび動的ストレージ期間についても同様です。

于 2011-06-29T17:40:05.440 に答える