Безопасно ли удалять нулевой указатель?
И это хороший стиль кодирования?
make_shared
(C ++ 11) и make_unique
(C ++ 14) программа должна содержать нуль в new
иdelete
new
или delete
. Классы, разработанные для управления ресурсами, в которых стандартные компоненты не могут выполнять свою работу, могут, конечно, делать то, что им нужно, но дело в том, что они делают ужасные вещи с памятью, которой они управляют, а не с кодом конечного пользователя. Итак, создайте свой собственный класс библиотеки / помощника для do new
/ delete
и используйте этот класс вместо них.
delete
. Вместо этого используйте RAII . То есть, используйтеstd::vector<T> v(100);
вместоT* p = new T[100];
, используйте умные указатели, такие какunique_ptr<T>
иshared_ptr<T>
которые заботятся об удалении вместо необработанных указателей и т. Д.