Vi un ejemplo del uso de la función: eliminar en cpp y no lo entendí por completo. el código es:eliminar la función en C++
class Name {
const char* s;
//...
};
class Table {
Name* p;
size_t sz;
public:
Table(size_t s = 15){p = new Name[sz = s]; }
~Table { delete[] p; }
};
Cuál es la acción exacta del comando: delete[] p;
?
Creo que el objetivo era eliminar todos los punteros en el contenedor Tabla.
Los corchetes en delete[]
me dan una pista de que elimina una matriz de punteros a Nombre pero no se especifica el tamaño de la matriz, entonces, ¿cómo sabe el destructor cuántos punteros eliminar?
posible duplicación de [eliminar vs eliminar \ [\] operadores en C++] (http://stackoverflow.com/questions/2425728/delete-vs-delete-operators-in-c) y [¿Cómo funciona la eliminación en C++ sabe cuántas ubicaciones de memoria eliminar] (http://stackoverflow.com/questions/2327848/how-does-the-delete-in-c-know-how-many-memory-locations-to-delete) –
" todos los punteros "- tenga en cuenta que' Table' solo contiene un solo puntero. Es un puntero a una matriz asignada dinámicamente de 'Nombre', pero solo hay un objeto creado dinámicamente (la matriz) que necesita ser desasignado. –