Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/07/2016, 04:40
Avatar de xKuZz
xKuZz
 
Fecha de Ingreso: febrero-2015
Ubicación: nullptr
Mensajes: 183
Antigüedad: 9 años, 10 meses
Puntos: 27
Respuesta: Duda con punteros

Un puntero apunta a una única dirección de memoria, en tu caso con el primer new has reservado espacio para una clase X y la has creado con el constructor por defecto, has liberado ese espacio, nas vuelto a reservar y crear la clase X con el constructor por defecto y has vuelto a liberar ese espacio. El delete es necesario para que no se produzca una fuga de memoria en ese caso.

Para conseguir lo que tu quieres has de utilizar la variación de new/ delete con []

Código C++:
Ver original
  1. int main(int argc, char* args[])
  2. {
  3.     X *p;
  4.     p = new X[2]; // Cogemos y creamos dos clases X memorias en contigua
  5.     p[0].n = 3;   // p[0] == *p es la primera clase X
  6.     p[1].n = 4;   // p[1] == *(p + 1) es la segunda clase X que hemos creado
  7.     delete[] p;   // Para realizar delete utilizamos la variación con []
  8.     return 0;
  9. }