私は大規模なC++プロジェクトを使用して製造プロセスを自動化する会社で働いています.C++ソースコードのリビジョン履歴を見ると、次のような特有の動作に気付きました。C++オブジェクトを同じサイズに保つスペアデータ?
ソフトウェアのさまざまなリビジョンでのこの動作の簡単な例を以下に示します。ソフトウェアの
リビジョン1:ソフトウェアの
struct Foo
{
int x;
int reserve[20]; // unused
};
リビジョン2:ソフトウェアの
struct Foo
{
int x;
int y[2];
int reserve[18]; // unused
};
リビジョン3:
struct Foo
{
int x;
int y[2];
int z[5];
int reserve[13]; // unused
};
未使用reserve
配列がわずかであることは明らかです作成された構造体のインスタンスが常に実行中のソフトウェアのリビジョンに関係なく、同じ量のメモリを使用してください。
私の質問は次のとおりです。これは大規模なC++プロジェクトでこれを行うための一般的なプラクティスですか?そして、このプラクティスを使用することが必要であるか有利であるという一般的な(一般的な意味、非アプリケーション固有の)理由はありますか?
これは絶対にひどいデザインです。それは[バイナリ互換性](https://en.wikipedia.org/wiki/Binary-code_compatibility)を維持することに本当に悪い試みのように思えますか? – CoryKramer
コンパイラの中には、[padding](https://en.wikipedia.org/wiki/Data_structure_alignment)を行うことができるため、構造体が保持されないものがあります。 –