Утечка памяти при использовании 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
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.