Допустим, я использую std::auto_ptr
в моем коде. *
Есть ли опасность в возвращении std::auto_ptr
объект?
может ли это привести к утечке памяти, неопределенному поведению и т. д.? или это безопасное использование std::auto_ptr
?
*Я не спрашивая, есть ли лучшая замена (как shared_ptr
); Я специально спрашиваю о подводных камнях возвращения auto_ptr
сам.
В целом это безопасно и может привести к созданию более надежного кода. Это не должно приводить к утечке памяти, так как указанная память автоматически удаляется.
Но есть несколько случаев, когда вы должны позаботиться:
auto_ptr
являются не равный!auto_ptr
из другой воли релиз объект, на который указывал первый указательПожалуйста, смотрите здесь:
Шаблонный класс auto_ptr разработан для того, чтобы помочь полуавтоматическому управлению памятью и предотвратить утечки памяти, когда непредвиденные события, такие как исключения, в противном случае могли бы привести к пропуску обычного кода очистки.
(цитата из (2))
Других решений пока нет …