私はSample
という名前のクラスを持っています。このクラスには、std::string
のパラメータvalue
が含まれています。 公開メンバ関数setValue(std::string tempdata)
があり、このメンバの値を設定します。std :: stringの割り当て中にセグメンテーションフォルトが発生する
void Sample::setValue(std::string tempdata) { this->value= tempdata; }
このパラメータの値を設定する必要があります。私はプログラムがクラッシュしたアプリケーションを実行すると、GDBを通してそれをデバッグする上で、私が得るとき
std::string tempvalue = "Hello";
Sample s;
s.setValue(tempvalue);
: は、私のような何かを
#0 0x049da761 in __gnu_cxx::__exchange_and_add() from /usr/lib/libstdc++.so.6
#1 0x049c0e6e in std::string::assign() from /usr/lib/libstdc++.so.6
#2 0x049c0ed1 in std::string::operator=() from /usr/lib/libstdc++.so.6
#3 0x08075e9b in Sample::setValue (this=0x83779a8, tempdata=Cannot access memory at address 0xffffffff)
誰もが、私はこの問題をデバッグするに取り掛かるべきか提案してくださいことはできますか?
コードは正常です。それを含むファイルを再コンパイルせずにヘッダファイルを修正しましたか? (例えばMakefileで作業していて、これらのターゲットが定義されている場合は 'make clean'を実行してから' make'を実行してください) –
これはgccの内部問題のようです。http://stackoverflow.com/questions/ 7038124/weird-sigsegv-segmentation-fault-in-stdstringassign-method-from-libstdc。 –