2012-02-07 26 views
-5

プリミティブ型ではなく隠れた関数でオブジェクトが構築されているので、C++でのパフォーマンスには完璧なスコープ変数がありますが、C99ではそうではありません。オブジェクトはスタックに格納されていますか?

私の質問です:とにかくスタックに格納されているオブジェクトはです

+0

ここには何が尋ねられるのかが分かりません。言い換えてみてください。 –

+0

風刺がなければ、何が尋ねられるのは疑問符で終わります。最初の部分は私がどのようにそれに尋ねなければならないかを示しています –

+0

最後に私は、C++にスタックとヒープの概念がないことを確認しました。あなたは、スタックに全く触れていない準拠のC++コンパイラを持つことができます。非常に*非常に少なくても、標準でスタックに格納される内容について何も指定していないことを意味します。 – cHao

答えて

0

最初の文で何を意味するのか分かりませんが、はい:ローカル変数のオブジェクトは通常、スタックに格納されます。

2

Automatically allocated [ローカル]オブジェクトは自動メモリ領域["スタック"]にあり、dynamically allocatedオブジェクトは動的メモリ領域["ヒープ"]にあります。

経験則として、C++では、newまたはmallocを使用していないすべてが自動的に割り当てられます。

編集:私は、標準の[私の知る限り]以来、二重引用符で「スタック」と「ヒープ」を使用注意データはこれらの領域内で管理する方法を指定しませんが、[再び私の知る限り]、コンパイラは確かに傾向がありますダイナミックエリアの自動領域とヒープにはスタックを使用します。

+0

あなたが静的に割り当てられたリンクの記事を読むと、スタック上のアイテムには適用されません。スタックアイテムは「自動的に割り当てられます」。したがって、2番目の文は正しくありません。 –

+0

@SteveFallows:あなたは正しいですか?私はネイティブの英語のスピーカーではなく、私は言葉を混ぜた。私は答えを編集した。ご意見ありがとうございます。 – amit

+0

静的領域と動的領域とは何ですか?それは本当に単一のオブジェクトの生涯についてであり、領域ではありません。しかし、それは本当にただの用語です。 – pmr

3

標準のC++では、スタックのようなものはありません。この標準は、オブジェクトの異なる寿命の間でのみ区別します。その場合、T t;と宣言された変数には自動保存期間があると言われています。つまり、生存期間は周囲のスコープの終わりで終わります。ほとんどの(すべて?)コンパイラはこれをスタックを通して実装しています。そのようにして作成されたすべてのオブジェクトが実際にスタックに存在するという合理的な前提です。

関連する問題