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
Debo aclarar que el código es casi todo mío por eso no puedo averiguarlo en el libro con el que estoy estudiando. -
#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{ }while( !ok ); contador++; if( tmpNumeros != NULL ){ numeros = tmpNumeros; numeros[contador-1] = ingreso; } else{ safeFree( numeros ); } }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++){ } } void saferFree(void **pp) { if (pp != NULL && *pp != NULL) { *pp = NULL; } }
Saludos.