将参数传递给 atexit()

Ra'*_*ska 3 c

在我的程序中,我使用了一个静态变量(没有其他办法),问题是它需要在退出时被释放。

我如何能够在不必将此变量声明为 global 的情况下实现这一目标?

我在考虑atexit函数,但它似乎无法进行论证。没有任何技巧可以传递我的变量吗?

谢谢。

Ste*_*mit 5

不确定它是否满足您的要求,但我会将静态变量设为文件范围的静态变量,在一个源文件中关闭,如下所示:

static char *my_static_variable = NULL;

static void my_cleanup_function()
{
    free(my_static_variable);
}

void my_initialization_function()
{
    my_static_variable = malloc(10);
    atexit(my_cleanup_function);
}
Run Code Online (Sandbox Code Playgroud)

也就是说,my_static_variable并且my_cleanup_function仅在那个源文件中可见;它们不是程序范围的全局变量。

作为一个侧面说明,但是,它是不是通常需要自由退出malloc分配内存。实际上,当操作系统释放您的进程使用的内存时,您分配的任何内容都会自动为您释放。

  • @Ra'Jiska 我明白了。我已经澄清了我的答案,以解释您可以将其设为文件范围的静态变量,这并不是真正的全局变量。 (2认同)