메모리를 할당했지만 소멸자를 호출하면 세그먼트 오류가 발생합니다. 이 코드는 입니다. 기억을 풀기 위해 나는 옳은 것을 사용하고 있습니까?C++ new and 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