我分配了内存但是当我调用析构函数时,它给了我一个分段错误.这是代码.我用正确的东西来释放记忆吗?
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;
}
Run Code Online (Sandbox Code Playgroud)
使用std::string并完成它.
如果不明显,那将解决问题.
但是,为了避免一些类似的问题并且只是了解更多涉及的问题,请查看3的规则,或者现在已知的C++ 11,规则为5.
| 归档时间: |
|
| 查看次数: |
407 次 |
| 最近记录: |