gpt4 book ai didi

当程序在不同的地方遇到错误并退出时,C 如何释放 malloc 的内存?

转载 作者:行者123 更新时间:2023-12-04 05:31:49 25 4
gpt4 key购买 nike

我正在努力想出一种干净的方法来处理我在 C 中分配的内存。假设我有这样的东西:

void function(int arg) {
char *foo;
foo = (char *)malloc(sizeof(char) * 100);
int i = func1(arg, &foo);

char *bar;
bar = (char *)malloc(sizeof(char) * 100);
int j = func2(&bar);

free(foo);
free(bar);
}

我的问题是func1func2可能会遇到错误和exit(1),所以我需要释放foobar 发生这种情况时。

如果 func1 遇到错误,我只需调用 free(foo) 就可以了。但是如果 func2 遇到错误,我不能只调用 free(bar) 因为我还需要释放 foo。这可能会变得非常复杂,我觉得这不是处理内存的正确方法。

我在这里遗漏了什么吗?如果有人能指出正确的方向,那就太棒了。谢谢!

最佳答案

如果一个函数调用exit,你根本不需要清理你的内存使用,它会被操作系统释放。但是如果你需要释放其他资源(例如锁定文件,清理临时文件,......)那么你可以使用 atexit函数或者如果你使用 gnu libc on_exit功能来完成这项工作。

关于当程序在不同的地方遇到错误并退出时,C 如何释放 malloc 的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479476/

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