Ver Mensaje Individual
  #20  
Antiguo 22-09-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola aguml.

En base, no existen arreglos bidimensionales en C/C++. Lo que existen son arreglos unidimensionales de elementos, donde cada uno de ellos es un arreglo.

El operador delete sin los corchetes se utiliza para liberar la memoria ocupada por un objeto, vg.:
Código PHP:
  int *= new int;
  ...
  
delete p
El operador delete con los corchetes se utiliza para liberar la memoria ocupada por un arreglo de objetos, vg.:
Código PHP:
  int *= new int[5];
  ...
  
delete [] v
En un arreglo de arreglos, primero se liberan los elementos del segundo arreglo y por último el primero.
Código PHP:
  ...
  for(
int r=0rowr++) delete [] matriz[r];
  
delete [] matriz
El segundo código de tu mensaje no es correcto, no le indicas al compilador que "matriz" se trata de un arreglo, lo tratas como un si fuera un solo objeto, nada garantiza que estes liberando correctamente la memoria.

El caso erroneo inverso sería:
Código PHP:
  int *= new int;
  ...
  
delete [] p//  Error, p no es un arreglo 
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-09-2015 a las 19:46:52.
Responder Con Cita