从原理到方法,一文讲清如何应对C语言内存泄露!
时间:2020-10-14 02:33:51
手机看文章
扫描二维码
随时随地手机看文章
[导读]可能不少开发者都遇到过内存泄漏导致的网上问题,具体表现为单板在现网运行数月以后,因为内存耗尽而导致单板复位现象。本文通过介绍内存泄漏问题原理及检视方法,希望后续能够从编码检视环节就杜绝此类问题发生。
内存泄漏问题原理
堆内存在C代码中的存储方式
char *info = NULL; /**转换后的字符串**/info = (char*)malloc(NB_MEM_SPD_INFO_MAX_SIZE);if( NULL == info){(void)tdm_error("malloc error!\n");return NB_SA_ERR_HPI_OUT_OF_MEMORY;}
堆内存的获取方法
char *local_pointer_xx = NULL;local_pointer_xx = (char*)function_xx(para_xx, …);
GSList* g_slist_append (GSList *list, gpointer data)
int ret;char *local_pointer_xx = NULL; /**转换后的字符串**/ret = (char*)function_xx(..., &local_pointer_xx, ...);
__STDIO_INLINE _IO_ssize_tgetline (char **__lineptr, size_t *__n, FILE *__stream)
内存泄漏三要素
要素一:函数内有局部指针变量定义;
要素二:对该局部指针有通过上一小节中“两种堆内存获取方法”之一获取内存;
要素三:在函数返回前(含正常分支和异常分支)未释放该内存,也未保存到其它全局变量或返回给上一级函数。
内存释放误区
dfl_get_object_list(const char* class_name, GSList **list)
内存泄漏问题检视方法
-END-
来源 | 华为云社区
作者 | 技术火炬手
| 整理文章为传播相关技术,版权归原作者所有 |
| 如有侵权,请联系删除 |
【1】C语言进阶技术:同事这些操作把我惊呆了!
【2】初学者:如何学好C语言?
【3】推荐给初学者的箴言:如何学好C语言
【4】C语言与C++40 年的爱恨情仇!
【5】C语言中的短路现象
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!






