Matriz de punteros, duda al liberar memoria[C]

Iniciado por NOB2014, 8 Junio 2016, 02:51 AM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

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. -

#include <stdio.h>
#include <stdlib.h>

#define safeFree(p) saferFree((void**)&(p))

void ingreso( void );
void imprimir( int numeros[], size_t contador );
void saferFree( void **pp );

int main( void ){

ingreso();

return 0;
}


void ingreso( void ){
size_t contador=0, ingreso, ch, ok;
int *numeros=NULL, *tmpNumeros=NULL;

do{
do{
printf( "\n Ingrese un numero [0 para finalizar]....:");
ok = scanf( "%lu", &ingreso ) == 1 && ingreso >=0;
while( (ch = getchar()) != '\n' && ch != EOF );
}while( !ok );

contador++;
tmpNumeros = (int *)realloc( numeros, contador * sizeof(int) );
if( tmpNumeros != NULL ){
numeros = tmpNumeros;
numeros[contador-1] = ingreso;
}
else{
safeFree( numeros );
puts( "Error en asignar memoria....." );
exit(1);
}

}while( ingreso >= 1 );

imprimir( numeros, contador );
safeFree( numeros );
}

void imprimir( int numeros[], size_t contador ){
size_t i;

for(i=0; i<contador-1; i++){
printf( "\n %d", numeros[i] );
}
}

void saferFree(void **pp) {
if (pp != NULL && *pp != NULL) {
free(*pp);
*pp = NULL;
        }
}

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.


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

Como lo estás haciendo lo haces bien.

realloc se encarga de liberar la.memoria anterior.

Saludos.
Un byte a la izquierda.

NOB2014

Hola, fary.
Muchas gracias por ocuparte.-

Saludos.
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.-