posible duplicado:
delete[] supplied a modified new-ed pointer. Undefined Behaviour?delete [] Matriz de caracteres
Digamos que hemos asignado un puñado de caracteres usando new char[number]
.
¿Será posible eliminar solo unos pocos caracteres finales (algo así como delete[] (charArray + 4);
, que supuestamente desasignará todos los caracteres excepto los cuatro primeros)?
leí que algunas implementaciones new[]
tienda del número de objetos asignados antes de la gran variedad de objetos para que delete[]
sabe cuántos objetos para desasignar, por lo que probablemente inseguro para hacer lo que te pido ...
Gracias.
EDIT:
está eliminando manualmente los bytes finales no deseados usando delete
declaraciones separadas una manera segura de hacer lo que estoy pidiendo?
¿Podría explicar un poco más en el camino 'std :: vector' lo hace? – slartibartfast
@myrkos Asigna espacio para almacenar * n * elementos, pero podría informar su tamaño como * <= n *. Esto es para que el redimensionamiento sea más eficiente. – Maxpm
@myrkos: asigna el espacio "en bruto" con ':: operator new', y luego utiliza la colocación' new' para convertir ese espacio en bruto en objetos. Cuando necesita destruir objetos (por ejemplo, cuando el 'vector' sale del alcance o usted' borra' los elementos) invoca el dtor directamente para hacerlo. –