Zusammengehörende Aufrufe von new und delete sollten die gleiche Form haben:
string *str = new string;
string *strarray = new string[100];
...
delete str;
delete [] strarray;
Der Effekt von
delete [] str;
delete strarray;
ist undefiniert
Nicht in der Form anwenden!
Außerdem folgt:
Wenn verschiedene Konstruktoren new verwenden, sollten sie das alle in der gleichen Form tun, da es nur einen Destruktor gibt.