Утечка памяти при использовании std::unique_ptr
возможна в следующих случаях:
Некорректное использование собственной реализации удалителя (Deleter):
Если пользовательский удалитель не освобождает выделенный ресурс должным образом (например, вызывает delete
вместо delete[]
для массива или не вызывает соответствующую функцию освобождения ресурса).
cpp
Передача сырого указателя из unique_ptr
в функцию, которая затем принимает владение им и не освобождает:
Передача владения должна выполняться явно с помощью std::move
. Если вы передаете get()
или сырой указатель, а затем не заботитесь об освобождении в другом месте, это может привести к утечке.
cpp
Исправленный пример с потенциальной утечкой (если передаем владение, но функция не удаляет):
cpp
Утечка памяти при использовании std::unique_ptr
возможна в следующих случаях:
Некорректное использование собственной реализации удалителя (Deleter):
Если пользовательский удалитель не освобождает выделенный ресурс должным образом (например, вызывает delete
вместо delete[]
для массива или не вызывает соответствующую функцию освобождения ресурса).
cpp
Передача сырого указателя из unique_ptr
в функцию, которая затем принимает владение им и не освобождает:
Передача владения должна выполняться явно с помощью std::move
. Если вы передаете get()
или сырой указатель, а затем не заботитесь об освобождении в другом месте, это может привести к утечке.
cpp
Исправленный пример с потенциальной утечкой (если передаем владение, но функция не удаляет):
cpp
Register or sign in to get access to full answers for all questions from the question bank.