c ++ new和delete

use*_*393 -4 c++

我分配了内存但是当我调用析构函数时,它给了我一个分段错误.这是代码.我用正确的东西来释放记忆吗?

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)

Che*_*Alf 5

使用std::string并完成它.

如果不明显,那将解决问题.

但是,为了避免一些类似的问题并且只是了解更多涉及的问题,请查看3的规则,或者现在已知的C++ 11,规则为5.