gpt4 book ai didi

c - C 中的错误处理 : unable to malloc in nested function

转载 作者:行者123 更新时间:2023-11-30 18:49:34 24 4
gpt4 key购买 nike

C ,我知道始终检查新分配的变量是否为 null 是一个很好的做法。分配后。如果是这样,我可以输出一个错误,例如perror并退出程序。

但是在更复杂的程序中呢?例如。我有main调用函数f1 (返回 int ),它调用函数 f2 (返回 char* ),它调用函数 f3 (返回 double ),并且我无法在 f3 内进行 malloc .

在这种情况下,我似乎不能只输出错误并退出(如果可能的话甚至可能会出现内存泄漏),因为 f3仍然会迫使我首先返回 double 。然后f2将迫使我返回 char*在这种情况下,跟踪错误并适当退出似乎非常痛苦。有效地覆盖跨函数的此类错误的正确方法是什么?

最佳答案

显而易见的解决方案是仔细设计程序,以便每个进行动态分配的函数都有一些报告错误的方法。大多数情况下,函数的返回值用于此目的。

在设计良好的程序中,错误会在调用堆栈中一路反弹,以便在应用程序级别处理它们。

在动态内存分配的特定情况下,最好尽可能将分配留给调用者。

关于c - C 中的错误处理 : unable to malloc in nested function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42437988/

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