Foros del Web » Programación para mayores de 30 ;) » Programación General »

Liberar memoria (C++)

Estas en el tema de Liberar memoria (C++) en el foro de Programación General en Foros del Web. Este es el programa: Código: #include <iostream.h> int main(int argc, char *argv[]) { int m=3; int n=2; typedef double* Fila; typedef Fila* Matriz; Matriz a; ...
  #1 (permalink)  
Antiguo 26/03/2003, 07:29
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Liberar memoria (C++)

Este es el programa:
Código:
#include <iostream.h>

int main(int argc, char *argv[])
{
  int m=3;
  int n=2;

  typedef double* Fila;
  typedef Fila* Matriz;
  
  Matriz a;
  
  a = new Fila[n];  // n FILAS
  
  int i,j;
  
  for ( i = 0 ; i < n ; i++ )
    {
    a[i] = new double[m]; // m COLUMNAS
    } //Final del for
  for ( i = 0 ; i < n ; i++)
    {
    for ( j = 0 ; j < m ; j++)
      {
      cout << "A[" << i + 1 << "," << j + 1 << "] = ";
      cin >> a[i][j];
      cout << "\n";
      }
    }
  for ( i = 0 ; i < n ; i++)
    {
      for ( j = 0 ; j < m ; j++)
      {
      cout << a[i][j] << " ";
      }
    cout << "\n";
    }
  
  if( a[0][0] != 0 )
    {
      // Divido la fila primera por su primer elemento
      for (j=0; j<m; j++)
      {
      a[0][j] = a[0][j] / a[0][0];
      }
    /* La segunda fila es la segunda fila - la primera fila + el primer
    elemento de la segunda fila*/
      for (j=0; j<m; j++)
      {
      a[1][j] = a[1][j] - a[0][j]*a[1][0];
      }
    }
  
  cin >> a[0][0];    
  
  // Eliminar las fugas de memoria

  ESTO ES LO QUE NECESITO
  
  return 0;
}
¿Cómo libero la memoria?
Un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 26/03/2003, 12:58
Avatar de Max13  
Fecha de Ingreso: octubre-2000
Ubicación: Mx
Mensajes: 1.229
Antigüedad: 23 años, 6 meses
Puntos: 0
Cuando ya no utilizes un objeto creado con NEW, simplemente borralo con DELETE
  #3 (permalink)  
Antiguo 26/03/2003, 15:50
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
¿Me pondrías un ejemplo?
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 28/03/2003, 15:48
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Porfa, lo necesito antes de 3 días.
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #5 (permalink)  
Antiguo 29/03/2003, 09:37
Avatar de Max13  
Fecha de Ingreso: octubre-2000
Ubicación: Mx
Mensajes: 1.229
Antigüedad: 23 años, 6 meses
Puntos: 0
mmmm no recuerdo muy bien la verdad, pero en la mayoria de tutoriales de C++ viene, pero creoque mas o menos asi:

tipo variable= new objeto;
...
...
...
delete objeto;
  #6 (permalink)  
Antiguo 29/03/2003, 10:09
 
Fecha de Ingreso: marzo-2003
Ubicación: València
Mensajes: 53
Antigüedad: 21 años, 1 mes
Puntos: 0
por ejemplo:::::::
(...)
#include <iostream>
#include <cstring>
#include <iomanip>

void main(void){
char *hola;
hola=new char[25];
strcpy(hola,"Hola mundo!"); //Copio la cadena "Hola mundo!" a la
printf("%s",hola); //nueva variable.
delete [] hola; //Aquí borras la memoria dinámica requerida

}
(...)
  #7 (permalink)  
Antiguo 29/03/2003, 11:46
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 2 meses
Puntos: 55
Código:
#include <iostream.h>

int main()
{

// Defino un tipo Fila sirve para guardar la dirección de memoria de
// un vector fila de números reales generado dinámicamente

  typedef double* Fila;
  typedef Fila* Matriz;
  
  Matriz a;
  
  // Tengo m filas y n columnas
  int m = 3, n = 4;
  
  // Reservo espacio para m filas
  a = new Fila[m];
  
  // Para cada fila reservo espacio para n números es decir para las n columnas
  for ( int i = 0; i < m; i = i + 1 )
  {
      a[i] = new double[n];
  }

  // LIBERAR MEMORIA

  for ( int i = 0 ; i < n ; i++ )
    {
    delete a[i];  // Borramos los objetos creados con a[i]=new double[n];
    }
  delete a; // Borramos el objeto creado con a = new Fila[m];

  return 0;
}; //main
¿Sería algo así? Al menos no da error de compilación, que ya es algo. Estoy de ver si lo consigo...
Un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:50.