これは、100 万の異なる要因に依存し、完全にプラットフォーム、コンパイラ、および設定に依存します。
オブジェクト ファイルには、外部リンケージを持つ関数の関数本体のすべてのアセンブリと、外部リンケージを持つすべてのグローバル変数が含まれている必要があります。内部リンケージを持つものはすべて、最適化されて呼び出しサイトに直接統合されている可能性があるため、オブジェクト ファイルに個別のエントリが必要になる場合とそうでない場合があります。これは、最適化設定に大きく依存します。
GCC には、基本的にソース コード全体のコピーをオブジェクト ファイルに追加し、そのサイズを劇的に増加させる「リンク時の最適化」のオプションもあります。
デバッグ シンボルも多くの余分なデータを追加します。
C++ 固有の質問: クラス定義自体は、アセンブリでは実際には表示されません。インライン化されていないメンバー関数は、コンパイルする必要がある関数にすぎませんが、データ メンバーはプリミティブ データ メンバーと同じように扱われます。その型のインスタンスを宣言するとコール スタックに置かれますが、直接ではありません。アセンブリコードに影響を与えます...定数で初期化している場合を除きます。もちろん、定数はコードに入ります。