Возвращает auto_ptr из функций неправильно / подвержено ошибкам?

Допустим, я использую std::auto_ptr в моем коде. *

Есть ли опасность в возвращении std::auto_ptr объект?
может ли это привести к утечке памяти, неопределенному поведению и т. д.? или это безопасное использование std::auto_ptr?

не спрашивая, есть ли лучшая замена (как shared_ptr); Я специально спрашиваю о подводных камнях возвращения auto_ptr сам.

2

Решение

В целом это безопасно и может привести к созданию более надежного кода. Это не должно приводить к утечке памяти, так как указанная память автоматически удаляется.

Но есть несколько случаев, когда вы должны позаботиться:

  • Копии из auto_ptr являются не равный!
  • Строительство одного auto_ptr из другой воли релиз объект, на который указывал первый указатель

Пожалуйста, смотрите здесь:

  1. http://www.gotw.ca/publications/using_auto_ptr_effectively.htm
  2. http://www.cprogramming.com/tutorial/auto_ptr.html

Шаблонный класс auto_ptr разработан для того, чтобы помочь полуавтоматическому управлению памятью и предотвратить утечки памяти, когда непредвиденные события, такие как исключения, в противном случае могли бы привести к пропуску обычного кода очистки.

(цитата из (2))

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]