1

実行中にこれらの余分なバイトに何が起こるかを参照するために余分なバイトが追加されると。これらの余分なバイトは空ですか、それともどのデータが含まれますか?

これに関するどんな助けも適用されます。ありがとう!!!

4

3 に答える 3

4

ISO 9899:2011 6.2.6.1/6

値が構造体または共用体タイプのオブジェクト(メンバーオブジェクトを含む)に格納されている場合、任意のパディングバイトに対応するオブジェクト表現のバイトは指定されていない値を取ります。

これは不特定の動作です。つまり、コンパイラは、すべての構造体に対して一貫してそうする限り、ガベージを含む任意の値をそこに置くことができます。コンパイラは、パディングバイトの処理方法をユーザーに文書化する必要はありません。

于 2012-05-14T11:15:55.090 に答える
3

それは何でもかまいません。を使用して構造を割り当てた場合calloc、最初はゼロになります。しかし、その後の操作により、ゴミが書き込まれる可能性があります。

于 2012-05-14T11:08:37.577 に答える
1

パディングは、そのメンバーの位置合わせのための構造で行われます。これは、最適化の目的でコンパイラによって行われるため、アクセスが高速になります。構造のギャップについて心配する必要はありません。先に進んで、構造体のメンバーを参照/参照解除してください。非常に優れた記事の1つは、http://www.geeksforgeeks.org/archives/9705です。

于 2012-05-14T11:15:48.087 に答える