GCC Bugzillaを読んでみると、どうやら 15087 の件が最も近いようなのですが、15087は
未だ手付かずのようですね。
ちなみに、こんな構造体を3個以上引数に並べて渡すと、3個目以降の構造体の値が壊れ
るんです。2個だと大丈夫なんですけどね。
1: struct strP{
2: char _XXX[10];
3: char _YYY[10];
4: double _ZZZ;
5:
6: double XXX,
7: YYY,
8: ZZZ;
9: };
どうやら、肝は文字列の部分とトータルのサイズで、sizeof( strP) の値が 56byte
で、文字列の合計が 16byte以上24byte以下だと、メンバー破壊が発生します。
例えば3行目と4行目を入れ替えると、アライメントが効くのか、トータルサイズが
64byteになってOKなんです。また、3行目と4行目はそのままで、メンバーを追加した
り削除したりしても、エラーが発生しなくなります。
質問コーナーにするつもりはないのですが、皆さんの参考になればと思い、構造体も掲示
してみました。
|