Утечка памяти — это когда динамически выделенная память становится недоступной, потому что на неё ничто не ссылается, и ты не можешь её освободить или переиспользовать.
Суть в том, что хотя сама переменная-указатель может выйти из области видимости и быть удалена, память, на которую она указывала в куче, остаётся выделенной, но неиспользуемой. Эту память нельзя освободить, поэтому она впустую тратит ресурсы системы.
{
Base *b = new Base();
// ... используешь b
} // b выходит из области видимости здесь
// Проблема: Память, выделенная 'new', НЕ удаляется автоматически
В этом сценарии:
b удаляется при выходе из области видимостиЧтобы избежать утечек памяти, убедись, что каждому new соответствует delete:
{
Base *b = new Base();
// ... используешь b
delete b; // Явно освобождаешь память
b = nullptr; // Хорошая практика
}
Или используй умные указатели для автоматического управления памятью:
{
std::unique_ptr<Base> b = std::make_unique<Base>();
// Память автоматически удаляется, когда b выходит из области видимости
}
Утечки памяти приводят к:
Когда переменная-указатель выходит из области видимости, оба — и сам указатель, и память, на которую он ссылается — автоматически освобождаются, предотвращая утечки памяти.
Новый — ещё не проверен сообществом
Вы