Dev - C++ - Problema con memoria dinamica

 
Vista:
sin imagen de perfil
Val: 33
Ha disminuido su posición en 4 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problema con memoria dinamica

Publicado por Jorge (24 intervenciones) el 02/05/2021 09:39:14
hola bueno tengo que hacer un codigo para mostrar como funciona el free con un arreglo 2x2, tengo que liberar un solo renglon y pues escribo free(sistema+1) por ejemplo para el 1, y no continua el programa apartir de ese free no hace nada de lo que le pido les muestro el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
main()
{
	int **sist;
	int TAM=10000;
	sist= (int**) malloc (sizeof(int*)*TAM);
	for(int A=0;A<TAM;A++) *(sist+A)= (int*) malloc (sizeof(int)*TAM); // aqui se termina de asignar la memoria
	printf("ING. EL #: \n"); scanf("%d",*(sist+9999)+9999); fflush(stdin);
	printf("\n EL # ES : %d \n",*(*(sist+9999)+9999));
 
	free(sist+9999);  // libero el lugar, y al imprimirlo despues me tendria que salir error, pero no hace nada a partir
        printf("aaa");  // de aqui
	printf("\n EL # ES : %d \n",*(*(sist+9999)+9999));
}

Intente con *(sis+9999) y me salio pero me seguia imprimiendo el numero despues, es cosa de mi pc o la forma de escribir ya me a pasado que en mi pc no sirven otros prog
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
Imágen de perfil de Rodrigo
Val: 1.755
Plata
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problema con memoria dinamica

Publicado por Rodrigo (539 intervenciones) el 02/05/2021 19:13:20
Si "el problema" es que se muestra el numero aunque hayas liberado la memoria, entonces has descubierto que la liberacion de memoria o la ocupacion de la misma es solo una "marca" en ella. No existe liberacion en el sentido de cambiar los datos alli presentes.
Siempre puedes acceder (leyendo) a zonas liberadas y tambien a zonas no pedidas.

Cuando marcas para liberacion, o bien el dato sigue alli o bien ha sido reasignada la memoria y si visitas esa memoria es posible que haya otro dato, en particular un 0, pero puede ser cualquier valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar