elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Matriz de punteros, duda al liberar memoria[C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Matriz de punteros, duda al liberar memoria[C]  (Leído 2,607 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Matriz de punteros, duda al liberar memoria[C]
« en: 8 Junio 2016, 02:51 am »

Hola, amigos. -
La duda es ¿debo liberar la memoria con un bucle o simplemente liberar el primer puntero?, lo que me sucede es que no me da ningún error, pero no tengo manera de comprobar si esto es correcto, por lo menos por mis escasos conocimientos de memoria dinámica desconozco cómo podría comprobarlo. -   
Con el barullo que tengo de tantas cosas nuevas no sé si logro hacerme entender, valga el intento. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define safeFree(p) saferFree((void**)&(p))
  5.  
  6. void ingreso( void );
  7. void imprimir( int numeros[], size_t contador );
  8. void saferFree( void **pp );
  9.  
  10. int main( void ){
  11.  
  12. ingreso();
  13.  
  14. return 0;
  15. }
  16.  
  17.  
  18. void ingreso( void ){
  19. size_t contador=0, ingreso, ch, ok;
  20. int *numeros=NULL, *tmpNumeros=NULL;
  21.  
  22. do{
  23. do{
  24. printf( "\n Ingrese un numero [0 para finalizar]....:");
  25. ok = scanf( "%lu", &ingreso ) == 1 && ingreso >=0;
  26. while( (ch = getchar()) != '\n' && ch != EOF );
  27. }while( !ok );
  28.  
  29. contador++;
  30. tmpNumeros = (int *)realloc( numeros, contador * sizeof(int) );
  31. if( tmpNumeros != NULL ){
  32. numeros = tmpNumeros;
  33. numeros[contador-1] = ingreso;
  34. }
  35. else{
  36. safeFree( numeros );
  37. puts( "Error en asignar memoria....." );
  38. exit(1);
  39. }
  40.  
  41. }while( ingreso >= 1 );
  42.  
  43. imprimir( numeros, contador );
  44. safeFree( numeros );
  45. }
  46.  
  47. void imprimir( int numeros[], size_t contador ){
  48. size_t i;
  49.  
  50. for(i=0; i<contador-1; i++){
  51. printf( "\n %d", numeros[i] );
  52. }
  53. }
  54.  
  55. void saferFree(void **pp) {
  56. if (pp != NULL && *pp != NULL) {
  57. free(*pp);
  58. *pp = NULL;
  59.        }
  60. }
Debo aclarar que el código es casi todo mío por eso no puedo averiguarlo en el libro con el que estoy estudiando. -
Saludos.




En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: Matriz de punteros, duda al liberar memoria[C]
« Respuesta #1 en: 8 Junio 2016, 10:13 am »

Como lo estás haciendo lo haces bien.

realloc se encarga de liberar la.memoria anterior.

Saludos.


En línea

Un byte a la izquierda.
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Matriz de punteros, duda al liberar memoria[C]
« Respuesta #2 en: 9 Junio 2016, 03:04 am »

Hola, fary.
Muchas gracias por ocuparte.-

Saludos.
En línea

abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda liberar memoria ram android
GNU/Linux
General Dmitry Vergadoski 4 3,075 Último mensaje 9 Febrero 2015, 19:57 pm
por el-brujo
Punteros creacion de matriz
Programación C/C++
Ja_90 5 2,638 Último mensaje 8 Septiembre 2015, 14:08 pm
por someRandomCode
[Solucionado] Liberar memoria de 2 punteros apuntando a la misma dirección(C) « 1 2 »
Programación C/C++
NOB2014 13 5,854 Último mensaje 4 Mayo 2016, 14:41 pm
por MAFUS
matriz de punteros de una dimensión - liberar memoria[C]
Programación C/C++
NOB2014 3 2,104 Último mensaje 11 Junio 2016, 02:35 am
por AlbertoBSD
Duda al liberar memoria
Programación C/C++
sallaks 5 3,242 Último mensaje 12 Julio 2020, 11:44 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines