トップページ > プログラム > 2015年04月20日 > xXEARlC8

書き込み順位&時間帯一覧

15 位/162 ID中時間01234567891011121314151617181920212223Total
書き込み数0110000000000000000000002



使用した名前一覧書き込んだスレッド一覧
627
C++相談室 part116 [転載禁止]©2ch.net

書き込みレス一覧

C++相談室 part116 [転載禁止]©2ch.net
648 :627[sage]:2015/04/20(月) 01:57:48.89 ID:xXEARlC8
あの後やっぱり気持ち悪くて色々調べてみた。
MAPファイル出力したところ、下記の様な情報が出力されてこれが原因だったんじゃないかと思う。

MAPファイル
Address Publics by Value Rva+Base Lib:Object
0000:00000000 ___ImageBase 10000000 <linker-defined>
0001:000003e0 _A@16 100013e0 f A.obj
0001:000003e0 _B@16 100013e0 f B.obj


該当関数はソースがA.cppとB.cppで別れていたから当然別オブジェクトになるんだけど
両方のオブジェクトファイルのセクション:オフセットがまったく同じになっていた。
正直、処理系に全然詳しくないから見当違いな事を言ってしまうかもしれないが、
この状態でリンクしにいったのが原因で>>627の様なバグが発生してたんじゃないかと思ってる。

ちなみに>>629で書いているけど該当関数にデバッグ文を入れると今回の事象が発生しないし、
この場合、MAPファイルのセクション:オフセットは同一ではなくなっている事を確認している。

今回の件は珍しくて非常に興味深いし。
後学のためにもこの辺詳しい人いれば補足しておくれ。
C++相談室 part116 [転載禁止]©2ch.net
649 :627[sage]:2015/04/20(月) 02:05:53.62 ID:xXEARlC8
>>648の補足

ABとは別に似たような関数作って実験してみたらやはり下記の様な感じになって事象が発生したわ
0001:00000730 _C@20 10001730 f C.obj
0001:00000730 _D@20 10001730 f D.obj


出力された機械語の参照もおかしくなっている。(セクションとオフセットが同じ値だから当然か)
※mov dword ptr [esp], ベースアドレス + オフセット(00001730h)


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。