如何正确使用动态内存?
0赞
发表于 9/27/2023 12:02:26 PM
阅读(2533)
一. 常见错误与预防
1. 分配后忘记释放内存
二. 自动查错机制
尽管在开发过程中坚守原则和谨慎编程甚至严格测试,然而内存泄露的错误还是难以杜绝,如何让系统自动查出内存泄露的错误呢?
一种比较好的方法是建立日志块,即每次分配内存时记录该内存块的指针和大小,释放时再去除该日志块,如果有内存泄露就会有对应的日志块记录这些内存没有释放,这样就可以提醒程序员进行查错。
有了上述日志块操作函数,再来实现动态内存分配与释放函数就很容易了。只有当处于DEBUG版本和打开内存调试DMEM_DBG时才进行日志登录,否则MallocExt()和FreeExt()函数与malloc()和free()是等价的,这样保证了系统处于发布版本时的性能。
(代码已经过严格测试,但这不是盈利的商业代码,即没有版权。但如果因代码错误带来的任何损失作者具有免责权利)
代码部分:
下面是内存日志块的操作函数:初始化、插入日志和移除日志:
带日志记录功能的内存分配MallocExt()和内存释放FreeExt()函数:
原文链接:https://mp.weixin.qq.com/s/rNy70kODxD1srGZvr5z7GQ
电子技术应用专栏作家 嵌入式与Linux那些事