2016-08-17 10 views

答えて

5

はい、あなたの最初の例は、(動的貯蔵中)(自動ストレージで)少なくともsizeof(int*) + sizeof(int)を必要とします。また、メモリ管理からのオーバーヘッドがあるかもしれません。

2番目の例では、使用方法によっては完全に(最適化によって)省略される可能性があるsizeof(int)しか必要ありません。

+0

編集されたこれらは正しい用語ですか? – vu1p3n0x

+0

@ SergeyAあなたはカジュアルなC++プログラマーのためのその声明を説明するのに気を使いますか?私はいつも 'B b()'がスタックしていて、 'B * b = new B()'がヒープだったと思っていました。 – GabrielF

3

"C++で次の2つのコード間でメモリ使用量に違いはありますか?"もちろん

あなたはもうそれを必要としないの後にあなたがdelete val;を呼び出していない場合を除き、あなたの第1の例では、メモリリークが発生します。

2番目のサンプルについては、RAIIというイディオムについて読むことができます(ただし、単純なintの値をすべて扱うだけで簡単です)。

注C++ newは、または言語と同じ方法で処理されません。ガベージコレクタはありません。

+0

ありがとうございました! :) – Ruby

関連する問題