В приложении с ошибками (например, неправильное использование std :: unique_ptr <> может привести к двум std :: unique_ptr <>, содержащим один и тот же необработанный указатель), вы можете получить двойное удаление, как второе выходит за рамки.
Мы заботимся об этих плохих случаях - иначе какой смысл обсуждать установку указателя на nullptr
в деструкторе? Все равно уходит!
Следовательно, в этом примере, по крайней мере, было бы лучше разрешить программную ошибку сегмента внутри отладчика во время модульного теста, , чтобы вы могли отследить реальную причину проблемы .
Так что, в целом, я не нахожу установку указателей на nullptr
особенно полезной для управления памятью.
Вы можете сделать это, но более надежной альтернативой является выполнение модульных тестов и разумное использование средства проверки памяти , например valgrind .
В конце концов, с некоторыми ошибками в памяти ваша программа может запускаться нормально много раз, до тех пор, пока она неожиданно не выйдет из строя - гораздо безопаснее проводить проверку качества с помощью средства проверки памяти, особенно когда ваша программа становится больше, и ошибки памяти становятся менее очевидно .