[解決済み] C++: 空のクラスのオブジェクトの大きさは?
2022-09-02 19:07:27
質問
私は 空のクラスのオブジェクトのサイズ . それは確かに ではなく なぜなら、他のオブジェクトと同じように参照したり指し示したりすることが可能だからです。しかし、そのようなオブジェクトはどれくらいの大きさなのでしょうか?
こんな小さなプログラムを使ってみました。
#include <iostream>
using namespace std;
class Empty {};
int main()
{
Empty e;
cerr << sizeof(e) << endl;
return 0;
}
Visual C++とCygwin-g++の両方のコンパイラで得られた出力は次の通りです。 1バイト ! マシンワードのサイズ(32ビットまたは4バイト)を想定していたので、これは少し意外でした。
どなたか なぜ は1バイトなのか? なぜでしょう? 4バイト?これはコンパイラやマシンにも依存するのでしょうか?また、なぜ空のクラスオブジェクトが
となるのか、より説得力のある理由を教えてください。 はしません。 はサイズ 0 バイトであるのか?どのように解決するのですか?
引用元 Bjarne StroustrupのC++スタイルとテクニックに関するFAQ で、size が 0 でない理由は "2つの異なるオブジェクトのアドレスが異なることを保証するためです" そして size は 1 にすることができます。
関連
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】未定義のオブジェクトプロパティを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】C++エラー:の初期化に一致するコンストラクタがありません。
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 変数サイズのオブジェクトが初期化されないことがある c++