Red de conocimiento informático - Computadora portátil - En C++, ¿qué significa si(p) eliminar[]p?

En C++, ¿qué significa si(p) eliminar[]p?

La función de esta operación es liberar la memoria apuntada por p si p no está vacía.

delete es una palabra clave en C++, su función es liberar memoria y su contraparte es la palabra clave new.

La nueva palabra clave puede aplicarse a una unidad de espacio, como

int * p = new int;

Se aplica a un espacio que tiene el tamaño del tipo int memoria y asigna la primera dirección al puntero p.

Cuando desee liberarlo después de su uso, debe llamar a

delete p;

La nueva palabra clave también puede aplicarse a un conjunto de espacios, como as

int *p = new int [10];

Solicite un conjunto de 10 espacios de tipo int y asígnelos al puntero p.

En este caso, debe llamar a

delete [] p;

Esta es la situación descrita en esta pregunta.

En cuanto a if(p), este método de escritura se hereda de C. La función de asignación de espacio utilizada en C es malloc y la función de liberación de espacio es free.

Cuando se llama a free y el parámetro es un puntero nulo (NULL), el programa fallará, por lo que generalmente se usa al liberar

if(p)free(p); Es decir, se libera sólo cuando p no está vacío.

La palabra clave de eliminación de C++ se ha optimizado para esto. Cuando el parámetro p es NULL, no se informará ningún error y no se realizará ninguna operación. Entonces, el if(p) aquí ya no es necesario. Sin embargo, después de usar la función gratuita de C, o los programadores que no comprenden las nuevas funciones de eliminación, agregarán if(p) para protección.