Используйте метод 2, когда:
- Время жизни объекта превышает область действия функции или
- Когда вы вызываете некоторую функцию, которая возвращает указатель, т.е. высоздание объекта из абстрактной фабрики или подобного.
Последняя методика обычно используется для обработки полиморфизма, поэтому тип, который вы получаете, может на самом деле быть не типом указателя, а классом, производным от него.
Всякий раз, когда вам нужно удалить возвращаемое значение, лучше всего обрабатывать его, заключив его в умный указатель или какой-либо другой объект, где его уничтожение произойдет «автоматически».
Если естьочистка для выполнения в конце функции, в идеале это должно быть сделано с помощью автоматических объектов (таких как scoped_ptr или auto_ptr).Это гарантирует, что очистка произойдет, даже если функция завершается досрочно (например, генерируется исключение).Этот метод называется RAII - Инициализация ресурсов - это инициализация.