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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  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 1,991 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
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.020



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 2,290 Último mensaje 9 Febrero 2015, 19:57 pm
por el-brujo
Punteros creacion de matriz
Programación C/C++
Ja_90 5 1,896 Ú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 4,344 Ú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 1,309 Último mensaje 11 Junio 2016, 02:35 am
por AlbertoBSD
Duda al liberar memoria
Programación C/C++
sallaks 5 1,776 Ú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