Прелесть C ++ в том, что вы имеете явный контроль над тем, когда что-то создается и когда оно уничтожается. Сделайте это правильно, и у вас не будет проблем с утечками памяти и т. Д.
В зависимости от вашей среды, вы можете создавать объекты в стеке или динамически размещать их (создавайте их в «куче» - куча в кавычках, потому что это перегруженный термин, но пока достаточно). 1003 *
Фу х; // создано в стеке - автоматически уничтожается при выходе программы из того блока кода, в котором она была создана.
Foo * y = новый Foo; // создано в куче - это О.К. чтобы передать это, так как вы контролируете, когда он уничтожен
Всякий раз, когда вы используете 'new', вы должны использовать соответствующую версию delete ... где-нибудь, как-нибудь. Если вы используете new для инициализации умного указателя, например:
std :: auto_ptr x = new Foo;
Вы на самом деле создаете два предмета. Экземпляр auto_ptr и экземпляр Foo. auto_ptr создается в стеке, Foo в куче.
Когда стек «раскручивается», он автоматически вызывает delete для этого экземпляра Foo. Автоматическая очистка для вас.
Итак, общее правило, используйте стековую версию, когда это возможно / практично. В большинстве случаев это также будет быстрее.