0

g ++でコードをビルドするときに、次の問題が発生したことが何度もあります。

すべてが順調に見えます。コンパイルして実行し、ブームを起こします。セグメンテーション違反がどこからともなくジャンプします。あなたはコードを見始めます、何も見つけることができません、きれいにする&& makeをしてください、そして問題は消えます。

私はこれが異なるg++バージョン、異なるマシン、異なるカーネルで起こるのを見てきました。

なぜこれが起こるのですか?それを防ぐ方法はありますか?

4

1 に答える 1

2

ヘッダーファイルを変更した場合、Makefileには、これらが含まれているソースファイルを特定するメカニズムがないため、再コンパイルする必要があります。ヘッダーファイルA.hでクラスが定義されていて、のAメンバーを追加、削除、または再配置するAと、クラスのサイズが変わるという問題が発生する可能性があります。ただし、一部のソースファイルでは古いサイズが引き続き使用されているため、クラス、スタック、またはヒープ。make cleanすべてのソースファイルを再コンパイルする必要があるため、クラスに関する新しい情報を強制的に伝播します。

ヘッダーファイルに大幅な変更を加えた場合は、完全な再構築を行うのがおそらく最も安全です。

于 2012-06-14T23:29:55.863 に答える