LodePNG 踩坑

在STM32F4项目中使用LodePNG库解码PNG图片时遇到内存不足的问题。通过扩展SDRAM堆空间解决了一次问题,但之后发现由于LodePNG_decode函数内的内存分配未正确释放导致堆耗尽。添加lodepng_free(*out)解决了内存泄漏,确保了程序的稳定运行。
摘要由CSDN通过智能技术生成

最近在一个STM32F4项目用到PNG图片,网上找到 LodePNG.c  和 LodePNG.h 两个文件,很快的就将一个小小的 64x64点的 PNG 图片解压并显示出来。

但是,慢慢增大图片尺寸,到320x168就不行了,总会返回空间不够的信息。

幸亏硬件设计中,通过FPGA外挂了一片32M字节的SDRAM,自己写代码,在SDRAM上实现了一个4M字节的堆,提供了接口给 LodePNG调用。

起先一切正常,程序循环几次后,再次出现空间不够的现象。追踪自己编的 malloc 和 free 函数,并查看内存占用情况,发现是第二块申请的内存没有释放,多循环几次,堆空间就耗尽了。

再检查 LodePNG 代码,发现在 lodepng_decode 函数里,malloc申请空间给了*out,却没有 free。

加上一句 lodepng_free(*out),万事大吉!

 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值