es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo pasar diferentes punteros de función a atexit en C?

Entiendo que atexit() recibe un puntero de función de este tipo void (*function)(void). Lo que quiero hacer es que cuando el programa se cierre, se ejecute una función para liberar toda la memoria. Entonces quiero que atexit() reciba en su lugar este puntero de función void (*function)(struct Node). ¿Existe una forma de hacer esto, o algo similar que me permita lograrlo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, atexit() solo puede aceptar un puntero a función del tipo void (*funcion) (void). Esto significa que la función apuntada por la llamada a atexit() debe tener un tipo de retorno de void y una lista de parámetros vacía (). En su caso, si desea liberar toda la memoria cada vez que el programa finalice, deberá escribir una nueva función que no requiera argumentos y libere toda la memoria necesaria. Esta función puede pasar después a atexit() como void (*funcion) (void).

    Alternativamente, podría modificar su función free() existente para que no requiera argumentos y libere toda la memoria necesaria, y luego pasar este puntero de función a atexit(). Sin embargo, este enfoque puede no ser ideal ya que la versión modificada de free() se comportará de manera diferente a la versión de la biblioteca estándar y puede causar problemas en otras partes de su programa. Por lo tanto, se recomienda crear una función dedicada para liberar toda la memoria.

Comments are closed.