嵌入式与Linux那些事

电子技术应用专栏作家——嵌入式与Linux那些事。关注嵌入式与Linux的校招社招,本人整理了《嵌入式软件工程师笔试面试指南》PDF,平时发布嵌入式与Linux相关的实用技术文章

如何正确使用动态内存?

0
阅读(2200)

一.  常见错误与预防

        1.   分配后忘记释放内存

image.png

image.png


二.  自动查错机制

尽管在开发过程中坚守原则和谨慎编程甚至严格测试,然而内存泄露的错误还是难以杜绝,如何让系统自动查出内存泄露的错误呢?

一种比较好的方法是建立日志块,即每次分配内存时记录该内存块的指针和大小,释放时再去除该日志块,如果有内存泄露就会有对应的日志块记录这些内存没有释放,这样就可以提醒程序员进行查错。

有了上述日志块操作函数,再来实现动态内存分配与释放函数就很容易了。只有当处于DEBUG版本和打开内存调试DMEM_DBG时才进行日志登录,否则MallocExt()和FreeExt()函数与malloc()和free()是等价的,这样保证了系统处于发布版本时的性能。

(代码已经过严格测试,但这不是盈利的商业代码,即没有版权。但如果因代码错误带来的任何损失作者具有免责权利)

代码部分:

image.png

下面是内存日志块的操作函数:初始化、插入日志和移除日志:

image.png

image.png

image.png

image.png

带日志记录功能的内存分配MallocExt()和内存释放FreeExt()函数:

image.png

image.png



原文链接:https://mp.weixin.qq.com/s/rNy70kODxD1srGZvr5z7GQ


微信图片_20220708145705.jpg

电子技术应用专栏作家 嵌入式与Linux那些事