Sobes.tech
Назад к вопросам
Junior — Middle
94

Будет ли происходить утечка памяти, если исключение выбрасывается внутри конструктора с использованием new?

Ответ от нейросети

sobes.tech AI

Если исключение выбрасывается внутри конструктора объекта, выделенного через new, то память, выделенная для этого объекта, будет автоматически освобождена, и утечки памяти не произойдет. Это связано с тем, что оператор new в C++ сначала выделяет память, затем вызывает конструктор. Если конструктор выбрасывает исключение, оператор new гарантирует освобождение выделенной памяти.

Пример:

struct A {
    A() {
        throw std::runtime_error("Ошибка в конструкторе");
    }
};

int main() {
    try {
        A* a = new A(); // Если конструктор выбросит исключение, память освободится
    } catch (...) {
        // Обработка исключения
    }
}

Таким образом, утечка памяти в этом случае не происходит.