delet[] 和delete

时间:2021-07-12 19:42:59

string *stringPtr1 = new string;
  string *stringPtr2 = new string[100];
  ……
  delete stringPtr1;
  delete [] stringPtr2;
  如果你对着stringPtr1使用“[]”形式,其结果未定义。如果你对着stringPtr2没有使用“[]”形式,其结果亦未定义。犹有进者,这对内建型别如int者亦未定义,即使这类型别并没有destructors。
  因此,游戏规则很简单,如果你在调用new时使用了[],则你在调用delete时也使用[],如果你在调用new的时候没有[],那么你也不应该在调用时使用[]。