0

オブジェクトの名前、オブジェクトを指しているポインター cabezera を返す必要がありますが、コンソールで実行すると、警告のセグメンテーション違反が出力されます。

cancion *cola;
cancion *cabezera = new cancion("ca","name","cab","cab","cab","cab","cab",*cola,*cabezera);
cola = new cancion("cola", "cola", "cola", "cola", "cola", "cola", "cola", *cabezera, *cola);


cancion *tmp1 = new cancion ("1","1","1","1","1","1","1",*cabezera, *cola); 
cancion *tmp = new cancion ("1","1","1","1","1","1","1",*cabezera, *cola);
string entrega = "";
tmp1 = cabezera;
entrega = tmp1->getID(); //getID() return a string.
cout<<entrega<<endl;
4

1 に答える 1

3

cancion *cabezera = new cancion("ca","name","cab","cab","cab","cab","cab",*cola,*cabezera);

コンストラクターが実際にどのように見えるかを知らずに、この場合、値が割り当てられていない cola を逆参照しようとしているため、セグメンテーション違反が発生します (技術的には未定義の動作ですが、99% を超える確率でセグメンテーション違反が発生します) )。

于 2013-11-10T04:03:27.977 に答える