答えて
コンパイル時に、メモリのレイアウトは実装の詳細です。あなたは知っているか気にする必要はありません。
しかし、C++では、クラスは型を定義しますが、(あなたがクラスへの限定されたイントロスペクションを可能にするRTTIを有効にしない限り)一般にメモリ自体を占有しません。 - それらは単なるフレームワークです。オブジェクトの構築と破壊。ただし、コンストラクタ、デストラクタ、インスタンスメソッド、およびクラスメソッドは、実行可能メモリの一部を占めますが、コンパイラはプログラムで使用されていないメソッドを最適化できます。
タイプのインスタンス(すなわち、オブジェクトと同様にint
のようなプリミティブ)は、C++ではメモリの大部分を占めますが、メンバ関数のためにそれらのクラスを参照します。特定のクラスのインスタンスが使用するメモリの量は、完全に完全に実装されているため、一般的にそれを気にする必要はありません。
それでも、クラス自体は、メモリを使用しませんが、それに関連するstd::typeinfo
インスタンスがありません。しかし、やはりこれは一般的には実装上のものであり、プログラマが多くの注意を払うようなものではありません。
静的フィールドは、クラスに属するメモリを占有すると見なすことができます。 –
Vtblsは通常、個々のオブジェクトではなくクラスに関連付けられています。 –
クラスのvtable、静的メンバー、およびメンバ関数は、実行時にメモリを占有します。 –
object instance
は、オブジェクトの青写真であるclass
であるため、実行時にメモリを占有します。
また、C++には、静的変数、ローカル変数、グローバル変数もあり、それらもメモリを占有しています。
静的、ローカルおよびグローバル変数はBBSデータセグメントに格納され、オブジェクトはヒープまたはスタックに格納されます。 オブジェクトはクラスのインスタンスですが、クラス定義はコンパイラによってクラス記述によってオブジェクトを作成するために使用されます。クラスとは、書かれた論文だけを占める「自分でテーブルを作る方法」のようなものですが、オブジェクトは実際の空間を占める指示に従って自分で作った実際のテーブルです。
- 1. C++クラス、オブジェクト、およびメモリ管理
- 2. オブジェクトC、パブリック関数とクラス
- 3. objective-cオブジェクトのメモリ管理
- 4. C#のメモリ/オブジェクトの理解
- 5. クラスのオブジェクトをC#
- 6. C#オブジェクトからクラス
- 7. .net c#クラスのメモリ割り当て
- 8. 派生C++クラスのメモリ割り当て
- 9. C#のPythonクラス(オブジェクト)と関数(自己)
- 10. C#オブジェクトから取ったメモリ
- 11. VB/C#キーパフォーマンス(メモリ)問題によるオブジェクト
- 12. オブジェクトにメモリを割り当てるC#
- 13. オブジェクトC静的変数メモリの質問
- 14. 目的匿名オブジェクトのCメモリ管理
- 15. C++構造体とメモリのクラスの比較
- 16. オブジェクト-cメモリ管理と混同しました
- 17. Objective-Cメモリ管理 - オブジェクトを返すときのベストプラクティス?
- 18. CLRストアドプロシージャとメモリ内のオブジェクト
- 19. 別のクラスのオブジェクトC#
- 20. のObjective-Cクラス/オブジェクト変数
- 21. クラスでbool値とC#でクラスのオブジェクトをpropogateする方法
- 22. C++クラス・ポインタとクラス・オブジェクトの間の違いは何ですか?
- 23. C#でクラスのオブジェクトからクラスのオブジェクトを返す方法は?
- 24. C#:オブジェクトの複雑なリストを別のクラスに渡すとたくさんのメモリが必要になる
- 25. C - Mallocとmemcpy(メモリ管理)
- 26. メモリ配置とC配列
- 27. JavaとC++の共有メモリ
- 28. C++メモリ管理とベクトル
- 29. Objective-cプロパティとメモリ管理
- 30. C#とObjective Cクラス
この質問は、(大丈夫、公正ではありません)少し意味がありません。 – delnan
ええ、宿題は忙しいですか? –
class&objectは、最終実行可能ファイルの一部です。それで、あなたはどう思いますか ? – Mahesh