¿Hay algún medio para acceder a la longitud antes de eliminar la matriz?
No. no hay manera de determinar eso.
El estándar no requiere que la implementación recuerde y proporcione los detalles del número de elementos solicitados a través del new
.
La implementación puede simplemente insertar patrones de bits específicos al final de los bloques de memoria asignados en lugar de recordar el número de elementos, y puede que simplemente busque el patrón mientras libera la memoria.
En resumen, es únicamente un detalle de implementación.
En una nota lateral, hay 2 opciones para superar prácticamente este problema:
- Puede simple uso de un
std::vector
que le proporciona funciones miembro como size()
o
- puede simplemente haz la contabilidad tú mismo.
new
al menos asigna suficiente memoria todo lo que solicitó.
Ya sabe cuánta memoria ha solicitado para que pueda calcular la longitud fácilmente. Puede encontrar el tamaño de cada artículo usando sizeof
.
Total memory requested/Memory required for 1 item = No of Items
Excelente pregunta +1 –
La mejor manera es usar, 'std :: vector pArr (nVariable);'. Esto asigna internamente el uso de la asignación dinámica y usted tiene '.size()' siempre a mano. –
iammilind
[Entrada de C++ FAQ en esto.] (Http://www.parashift.com/c++faq-lite/num-elems-in-new-array.html) – jrok