0
例を簡単にして再利用性を向上させました。コアファイルで私はペアをキーとして以下のマップを使用し、segfaultsを持っています。何か案は?
#include <map>
#include<iostream>
#include<string>
using namespace std;
class A
{
public:
map<pair<string, string>, string* > m;
string str;
A():str("sdfsd")
{
m[make_pair("aa","bb")]=&str;
}
void foo()
{
map<pair<string, string>, string*>::iterator iter =m.begin();
cout<<"In A::foo:\n";
for(; iter!=m.end(); iter++)
{
pair<string, string> keys=iter->first;
cout<<"map and test = "<<str<<" and "<<*iter->second<<endl;
}
}
};
int main()
{
A a;
a.foo();
}
:エラーコードを次の
#0 0x0066f6c7 in std::string::_Rep::_M_grab() from /usr/lib/libstdc++.so.5 #1 0x0066f80c in std::basic_string, std::allocator >::basic_string () from /usr/lib/libstdc++.so.5 #2 0x087e1e69 in pair (this=0xbfff7070, [email protected]) at (pair keys=iter->first;)
あなたはおそらく別のことを台無しにしました。私はその例が良いと思う。 「シンプルでない」コードを表示してください。それはすべてその1つのプログラムですか?あるいは、あなたのプログラムはバイナリライブラリで構成されていますか? Iirc、libstdC++。so.5はかなり古いです。 ABIの問題かもしれません。 –
私はconst pair&keys = iter-> firstで奇妙に修正しました。 同じプログラムを実行しますが、同じプログラムで正確なパターンは 大きなプログラムではありません。申し訳ありませんが、コードは専有であり、投稿することはできません –
.... ABIとは何ですか? –