C++相談室 part122 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0026デフォルトの名無しさん
2016/01/25(月) 12:49:17.26ID:MTh5r7jR構造体同士の代入は出来ても比較が出来ないのは、
アラインメントを合わせるためにパディングされている場合があるから。
それを強引にmemcmpで比較したところで、その部分に何が入ってるかが分からないのだから
比較結果は環境依存になる。
つまり、charが1バイト、intが4バイト、アラインメントが4バイトだと仮定すると
struct hoge {char a; int b;};
は
struct hoge {char a; char pad[3]; int b;};
と同じような構造体のマップになる。
んで、memsetで初期化した場合を除けばpadの部分に何が入ってるかが分からないから
e,f,gはtrueにもfalseにもなりうる。
■ このスレッドは過去ログ倉庫に格納されています