gpt4 book ai didi

c - 将参数传递给 atexit()

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:36 26 4
gpt4 key购买 nike

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

如何在不必将此变量声明为全局变量的情况下实现这一点?

我在想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);
}

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

不过,作为旁注,通常不需要在退出时释放 malloc 的内存。实际上,当操作系统释放您的进程使用的内存时,您分配的任何内容都会自动为您释放。

关于c - 将参数传递给 atexit(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44097610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com