来分析一个C语言代码结构的设计问题。
这段代码,使用了两次malloc,分别给 p1 和 p2 申请了内存。用完后,内存释放,防止内存泄漏。
大家觉得,这样的代码设计有没有问题。
代码是某位学员在项目中遇到的,我拿过来给简化了一下。
其实这样的代码可能会导致内存泄漏,如果第一个 malloc 申请成功,第二个 malloc 申请失败,直接 return -1 退出函数,就会导致前面申请的内存没有释放,长期运行,极有可能导致安全隐患。
对于这种连续初始化的代码,一旦某个初始化失败,应该要考虑到如何释放前面已经申请的资源。
最简单的方法,就是在 return 退出之前,把前面的资源清理掉。
不过这种方法,越往下初始化越多,退出的时候需要释放的也就越多,重复的代码也会很多。
或者使用 do while 语句,把代码放在循环里面,初始化失败后,直接跳出循环,不需要再进行下面的初始化,然后统一在某个地方释放资源。
类似的还有 goto 语句,也是把释放资源统一处理。
大家还有没有其他更好的办法,如果你也遇到过,欢迎在评论区交流。
-
C语言
+关注
关注
183文章
7642浏览量
144553 -
代码
+关注
关注
30文章
4940浏览量
73115
原文标题:分析一个隐藏的内存泄漏问题
文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
C语言的编程技巧
C语言程序的结构
C语言特性
C语言和单片机C语言有什么差异
C语言精彩编程百例-364页
为什么学了C语言,却写不出像样的项目?
源代码加密、源代码防泄漏c/c++与git服务器开发环境

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