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