typedef struct temp
{
int a,b;
char *c;
temp(){ c = (char*)malloc(10);};
~temp(){free(c);};
}temp;
int main()
{
temp a;
list<temp> l1;
l1.push_back(a);
l1.clear();
return 0;
}
セグメンテーション違反が発生しました。Segフォールト後のアイテムがSTLコンテナにプッシュされました
あなたがしなければならない理由がない限り、malloc&freeの代わりに新しい&deleteを使用する習慣を身につけてください。 –
C言語でstructを "typedef"する必要はありません。 – Dan
トップヒント:クラスや構造体を定義するときは、ポインタメンバーでespを宣言し、operator =とcopyコンストラクタをprivateとして宣言します。 "private:temp&operator =(const temp&); temp(const temp&);"コピーが必要なクラスで何かを行うと、コンパイルされず、それらを提供する必要があることがわかります。 –