¿Es seguro eliminar un puntero NULL?
¿Y es un buen estilo de codificación?
make_shared
(c ++ 11) y make_unique
(c ++ 14) el programa debe contener cero de new
edelete
new
o delete
. Clases diseñadas para administrar los recursos, donde los componentes estándar no pueden hacer el trabajo, se pueden hacer, por supuesto, lo que tienen que hacer, pero el punto es que se hacen las cosas feas con la memoria que gestionan, no el código del usuario final. Entonces, cree su propia biblioteca / clase auxiliar para hacer new
/ delete
, y use esa clase en lugar de ellos.
delete
. Use RAII en su lugar. Es decir, el usostd::vector<T> v(100);
en lugar deT* p = new T[100];
, utilizar punteros inteligentes comounique_ptr<T>
yshared_ptr<T>
que se encargan de la eliminación en lugar de punteros primas etc.