完全に空のクラスのオブジェクトを作成する場合、そのサイズは標準で保証されているように >0 になります (2 つのオブジェクトのアドレスが異なるため)。しかし、このバイトに格納されているもの (値、インデックス、アドレス) に興味がありますか? これを知る方法はありますか?
質問する
237 次
4 に答える
1
技術的には、そこに格納されているものはUnspecifiedです。
要するに、それは実装に任されており、実装は動作を文書化する必要はありません。
于 2013-02-25T18:08:56.470 に答える
1
これは、たとえば achar
とint
メンバーの間のギャップを埋めるために使用される他のフィラーと同じ (不明、未定義) の内容を持ちます。また、「ギャップフィラー」と同様に、「このデータの配置がうまくいくことを確認する」以外の目的はありません。空のクラスのサイズが 0 の場合、そのような 2 つのオブジェクトの配列は 0 バイトを占め、両方のオブジェクトが同じアドレスを持つことになり、あらゆる種類の物事にとってかなり奇妙になります。
于 2013-02-25T18:09:35.337 に答える
0
私が正しく思い出せば、標準は空のクラスのオブジェクトがスペースを占めることを保証します。正確にどのくらいのスペースが保存されているかはわかりません。そのため、実装者次第です。
与えられたスペースに何があるのか知りたい場合は、キャストを再解釈して見てみることができます。
于 2013-02-25T18:08:07.873 に答える
0
何も、それはただのパディングです。他のパディングと同じように、そこに格納されている値に依存することはできません。また、値が存在することさえも信頼できません。
于 2013-02-25T18:08:27.280 に答える