私はメモリを割り当てましたが、デストラクタを呼び出すと、セグメンテーション違反が発生します。 これがコードです。私は記憶を解放するために正しいものを使用していますか?C++ newとdelete
class plan {
char *symbol;
gro *grow;
public:
plan (int, char[]); //constructor
~plan (); //destructor
};
plan::plan (int num_of_sm, char sm[]){
try {
symbol = new char [strlen(sm) + 1];
}
catch (std::bad_alloc) {
symbol = NULL;
}
if (symbol != NULL) {
if (sm == NULL) {
strcpy (symbol, "");
}
else {
strcpy (symbol, sm);
}
}
gro = new grow [num_of_sm];
}
plan::~plan(){
delete [ ] symbol;
delete [ ] gro;
}
クラスの完全な定義が表示されていないため、言うことは難しいです。 http://sscce.orgを読んでください。最も可能性の高い説明は 'symbol'は有効なポインタではないということです。 –
コンストラクタはどのように見えますか? –
あなたはどのようにしてシンボルのためにメモリを割り当てて成長しましたか? – Haatschii