プリミティブ型ではなく隠れた関数でオブジェクトが構築されているので、C++でのパフォーマンスには完璧なスコープ変数がありますが、C99ではそうではありません。オブジェクトはスタックに格納されていますか?
私の質問です:とにかくスタックに格納されているオブジェクトはです?
プリミティブ型ではなく隠れた関数でオブジェクトが構築されているので、C++でのパフォーマンスには完璧なスコープ変数がありますが、C99ではそうではありません。オブジェクトはスタックに格納されていますか?
私の質問です:とにかくスタックに格納されているオブジェクトはです?
最初の文で何を意味するのか分かりませんが、はい:ローカル変数のオブジェクトは通常、スタックに格納されます。
Automatically allocated [ローカル]オブジェクトは自動メモリ領域["スタック"]にあり、dynamically allocatedオブジェクトは動的メモリ領域["ヒープ"]にあります。
経験則として、C++では、new
またはmalloc
を使用していないすべてが自動的に割り当てられます。
編集:私は、標準の[私の知る限り]以来、二重引用符で「スタック」と「ヒープ」を使用注意データはこれらの領域内で管理する方法を指定しませんが、[再び私の知る限り]、コンパイラは確かに傾向がありますダイナミックエリアの自動領域とヒープにはスタックを使用します。
標準のC++では、スタックのようなものはありません。この標準は、オブジェクトの異なる寿命の間でのみ区別します。その場合、T t;
と宣言された変数には自動保存期間があると言われています。つまり、生存期間は周囲のスコープの終わりで終わります。ほとんどの(すべて?)コンパイラはこれをスタックを通して実装しています。そのようにして作成されたすべてのオブジェクトが実際にスタックに存在するという合理的な前提です。
ここには何が尋ねられるのかが分かりません。言い換えてみてください。 –
風刺がなければ、何が尋ねられるのは疑問符で終わります。最初の部分は私がどのようにそれに尋ねなければならないかを示しています –
最後に私は、C++にスタックとヒープの概念がないことを確認しました。あなたは、スタックに全く触れていない準拠のC++コンパイラを持つことができます。非常に*非常に少なくても、標準でスタックに格納される内容について何も指定していないことを意味します。 – cHao