Pascal/Turbo Pascal - Memoria en C/C++

 
Vista:

Memoria en C/C++

Publicado por Martin (1 intervención) el 07/09/2011 13:40:25
¡Hola!

Primero de todo, muchas gracias de antemano al que me conteste, y perdón por lo que encontréis mal en el programa o si la pregunta es muy estúpida, pero no soy informático, mi formación en programación es bastante básica.

Mi duda es por la memoria en C/C++, más en concreto en cómo liberarla. Uso Linux y el programa Geany para programar. He hecho un programa básico para exponer la duda:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
double **crearMatriz2D(int filas, int columnas);
void destruirMatriz2D(double **m, int filas);
 
int main(void)
{
	double **A;
	int a,i;
	A=crearMatriz2D(20000000,1);
	for(i=0;i<20000000;i++)
	{
		A[i][0]=1;
	}
	destruirMatriz2D(A,20000000);
}
 
double **crearMatriz2D(int filas, int columnas)
{
       double **m;
       int j;
       m=(double **)malloc(filas*sizeof(double *));
       for(j=0;j<filas;j++)
       {
              m[j]=(double *)malloc(columnas*sizeof(double));
       }
       return(m);
}
 
void destruirMatriz2D(double **m, int filas)
{
     int j;
     for(j=0; j<filas; j++)
     {
              free(m[j]);
     }
     free(m);
     return;
}


El caso es que cuando uso el Monitor del Sistema para ver cómo se va ocupando la memoria ram, observo que le memoria que se ocupa con la matriz de 20000000 de elementos, no se libera del todo cuando la destruyo! Sólo se libera una pequeña parte, el total se libera cuando salgo del programa. Esto es un problema para otros programas que estoy haciendo más complejos, porque aunque voy destruyendo las matrices que voy usando, la memoria ocupada se me va acumulando y al final me quedo sin memoria. Espero que alguien pueda ayudarme!

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder