2012-05-17 47 views
5

私のプログラムにはないと思われる奇妙なセグフォルトが発生しています...とにかく明示的ではありません。私は2つの配列の "strcmp"を呼び出しています...どちらの配列も同じ型の構造体に格納されています。 「 - >」私は逆参照を通じてドット表記と1と1で取得しています:セグメンテーションフォールト: "...そのようなファイルやディレクトリはありません"

int name = strcmp(one.name, two->name); 

それは罰金コンパイルが、私はそれを実行したとき、私はワンセグ障害を取得します。私はGDBでそれを追跡しようとしましたが、ブレークポイントを置く直前にブレークポイントを設定すると、とにかくエラーが発生します。私は得る:

Program received signal SIGSEGV, Segmentation fault. 
__strcmp_ia32() at ../sysdeps/i386/i686/multiarch/../strcmp.S:40 
40 ../sysdeps/i386/i686/multiarch/../strcmp.S: No such file or directory. 
    in ../sysdeps/i386/i686/multiarch/../strcmp.S 

FML。提案?ありがとう!

+1

gdbでsegfaultsするときにバックトレースを試しましたか? –

+2

呼び出し時に 'one.name'、' two'、 'two-> name'の値は何ですか? – Mud

+3

セグメンテーションフォルトが発生しました。あなたの環境に 'strcmp'のソースが存在しません。システムは、segフォールトが発生した後*ルックアップを試みます。ソースは標準のライブラリ関数である必要はありません。問題は、メモリの境界を他の場所に上書きすることです。valgrindまたはメモリ解析ツールを使用してプログラムを実行すると、どこで詳細情報が得られるはずです。 –

答えて

2

私の提案:-gでコンパイルし、valgrindで実行してください。

関連する問題