Здравствуйте, Leshi, Вы писали:
L>Здравствуйте, LuciferMoscow, Вы писали:
L>>>во-вторых тренирует память (выделил -- освободи!
)
LM>>В целом прав. Но не проще ли дать освобождение самому компилеру( using smart pointer)
L>ИМХО для начинающего -- smart pointer как раз вред. Ведь если есть два объекта, у которых внутри указатели (умные) друг на друга, то в этом случае память так и не освободится... Так что думаю, сначала надо научиться работать с памятью руками, а потом использовать автоматизацию.
Сейчас имел ввиду std::auto_ptr
Пример:
void MyFunc()
{
LcfObject* pQ=new LcfObject;
...
if ( !SomeOtherFunc() )
{
delete pQ;
throw SomeError;
}
...
if ( !SomeOtherFunc2() )
{
delete pQ;
throw SomeOtherError;
}
...
delete pQ;
}