Если вы используете new, вы должны использовать delete.Это вызовет деструктор экземпляра для вызова.Если этот экземпляр new в каких-либо объектах своего конструктора (или более поздних) должен удалить их в своем деструкторе.
Кроме того, если вы создаете новые массивы up (new char [20] и т. Д.), Вы должны использовать 'delete [] 'при удалении, иначе поведение не определено.
Вы можете избежать многих проблем, используя std :: tr1 :: shared_ptr или boost :: shared_ptr, который будет выполнять подсчет ссылок и выполнять удалениедля вас это вместо:
Foo *pFoo = new Foo;
do
std::tr1::shared_ptr<Foo> pFoo(new Foo);
тогда вам не нужно делать удаление: когда счетчик общих ссылок shared_ptr обращается в ноль, он будет делатьудаление для вас.