在我的程序中,我使用了一个静态变量(没有其他办法),问题是它需要在退出时被释放。
我如何能够在不必将此变量声明为 global 的情况下实现这一目标?
我在考虑atexit函数,但它似乎无法进行论证。没有任何技巧可以传递我的变量吗?
谢谢。
不确定它是否满足您的要求,但我会将静态变量设为文件范围的静态变量,在一个源文件中关闭,如下所示:
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分配内存。实际上,当操作系统释放您的进程使用的内存时,您分配的任何内容都会自动为您释放。