1 分析C语言代码结构的设计问题-德赢Vwin官网 网

分析C语言代码结构的设计问题

描述

来分析一个C语言代码结构的设计问题。

这段代码,使用了两次malloc,分别给 p1 和 p2 申请了内存。用完后,内存释放,防止内存泄漏。

大家觉得,这样的代码设计有没有问题。

代码是某位学员在项目中遇到的,我拿过来给简化了一下。

其实这样的代码可能会导致内存泄漏,如果第一个 malloc 申请成功,第二个 malloc 申请失败,直接 return -1 退出函数,就会导致前面申请的内存没有释放,长期运行,极有可能导致安全隐患。

对于这种连续初始化的代码,一旦某个初始化失败,应该要考虑到如何释放前面已经申请的资源。

最简单的方法,就是在 return 退出之前,把前面的资源清理掉。

不过这种方法,越往下初始化越多,退出的时候需要释放的也就越多,重复的代码也会很多。

或者使用 do while 语句,把代码放在循环里面,初始化失败后,直接跳出循环,不需要再进行下面的初始化,然后统一在某个地方释放资源。

类似的还有 goto 语句,也是把释放资源统一处理。

大家还有没有其他更好的办法,如果你也遇到过,欢迎在评论区交流。
 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分