_attribute_((cleanup))用于修饰一个变量 ,在它的作用域结束时执行一个特定的方法。
void AutoFreeStr(char *str)
{
if (str != NULL)
{
free(str);
}
}
void Temp(void)
{
char *name = malloc(100);
free(name); // 需要显示释放
name = NULL;
__attribute__((cleanup(AutoFreeStr))) char *autoFreeName= malloc(100); //Temp函数结束自动调用AutoFreeStr函数
}
int main()
{
Temp();
return 0;
}
参考:
https://blog.csdn.net/sodaslay/article/details/39695605