Станд.:: shared_ptr должен использоваться, чтобы представлять совместно использованное владение
Станд.:: shared_ptr должен использоваться, чтобы представлять совместно использованное владение.
Необработанные указатели на память кучи страдают от двух связанных проблем:
Когда необработанный указатель выходит из осциллографа, резкая память не может быть освобождена и результат в утечке памяти. Необходимо не забыть явным образом освобождать память (delete
указатель), прежде чем указатель выходит из осциллографа.
Если вы передаете необработанный указатель на функцию, неясно, берет ли функция исключительное владение резкого ресурса и может освободить память или должна оставить освобождение вызывающей стороне. Если функция освобождает память, существует риск, что другой указатель, указывающий на ту же ячейку памяти, теперь оставляют, свисая.
std::shared_ptr
объект является интеллектуальным указателем, который решает обе задачи.
Вы не должны явным образом освобождать резкую память. Память освобождена, прежде чем последний указатель, указывающий на ячейку памяти, выходит из осциллографа.
Указатель совместно использовал владение резкого объекта. Когда вы передаете указатель на функцию, функция принимает владение памяти через указатель и неявно освобождает память на завершении, пока никакой другой указатель не указывает на объект.
Несмотря на то, что std::shared_ptr
объект имеет немного служебные по необработанному указателю, использование этого объекта избегает возможных утечек памяти позже.
Средство проверки отмечает функции кроме main
это имеет необработанные указатели как параметры или возвращаемые значения.
Средство проверки повышает нарушение и этого правила и AUTOSAR C++14 Rule A20-8-2
.
Если вы хотите, чтобы функция взяла исключительное владение резкого объекта, преобразуйте необработанный указатель на std::unique_ptr
ввод.
Если вы хотите, чтобы функция взяла совместно использованное владение резкого объекта, преобразуйте необработанный указатель на std::shared_ptr
ввод.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Общая сервисная библиотека |
Категория: необходимый, автоматизированный |