История изменений
Исправление dvetutnev, (текущая версия) :
А можно пример такого использования? Хоть один.
Для очистки ресурсов при альтернативном завершении функции.
auto func()
{
A* a = createA();
if (!a) {
//set error
return;
}
B* b = createB();
if (!b) {
goto clearA;
}
C* c = createC();
if (!c) {
goto clearB;
}
process(a, b, c);
clearC:
releaseC(c);
clearB:
releaseB(b);
clearA:
releaseA(a);
}
Но это больше для Си актуально, для С++ есть RAII и деструкторы.
Исходная версия dvetutnev, :
А можно пример такого использования? Хоть один.
Для очистки ресурсов при альтернативном завершении функции.
auto func()
{
A* a = createA();
if (!a) {
//set error
return;
}
B* b = createB();
if (!b) {
goto clearA;
}
if (!c) {
goto clearB;
}
process(a, b, c);
clearC:
releaseC(c);
clearB:
releaseB(b);
clearA:
releaseA(a);
}
Но это больше для Си актуально, для С++ есть RAII и деструкторы.