Текст переменной выходит за пределы области видимости (однако строковый литерал не удаляется).
Для объектов, которые вы выделяете с помощью новых (например, SomeClass), вам необходимо явно удалить их.Если вы хотите, чтобы объекты, расположенные таким образом, автоматически удалялись, посмотрите на boost smart smart pointers (std :: unique_ptr, если ваш компилятор поддерживает c ++ 0x).
Это автоматическиудалите выделенный объект, когда общий указатель выйдет из области видимости.
Ваш код будет выглядеть следующим образом:
int main(int argv, char **argv)
{
boost::scoped_ptr<SomeClass> ptr(new SomeClass);
// the object is automatically deleted
return 0;
}
Примечание. В этом конкретном примере вы также можете использовать std ::auto_ptr (но это будет устаревшим в c ++ 0x).
Примечание 2: Как отмечалось в комментариях Коса, в этом случае более целесообразно использовать boost :: scoped_ptr или std ::unique_ptr (C ++ 0x).В моем ответе сначала использовался boost :: shared_ptr, который более уместен, если вам нужно разделить владение указателем, например, между несколькими классами.