今天调试出两个内存泄露

内存泄露真是无处不在,使用windows   API 不当也会引起内存泄露,new 的内存,delete完并不是真的就保险了。

今天调试程序,就发现了两处内存泄露,在PC上有的问题运行时会提示,但wince系统下这方面做的就不够,现在把两个错误写下来。

1.我在程序中读取MP3的专辑图片,需要预先把一块内容读出,然后再把图片数据分离出来,原理如下

                        BYTE *pData = new BYTE[dwSize];   //包含头信息,图片数据

//作出判断,这时 pData经过几次 pData++ 已经不再指向new的那块内存初始地址

                        delete[]   pData;    //这时出现内存泄露  pData已经变化了

                       如果这段代码多次使用,就会严重泄露

2.CreateDIBSection()  windows  API函数   ,这个函数会让系统为位图分配内存,它的第四个参数是一个双指针

                  如果在使用时如下就会出现内存泄露

                  BYTE *pBitData = new BYTE[dwSize];    //自己动态分配的内存

                 HBITMAP  hbmp = CreateDIBSection(hDC, &bi, DIB_RGB_COLORS, (void**)&pBitData, NULL, 0);   //系统要分配一块内存,这时pBitData指向系统分配的那块内存

                      ///

                      delete[]  pBitData;   //这时删除的只是系统分配的那块,自己动态分配的就没有删除

                     如果代码多次执行就会出现严重泄露

上边泄露,编译执行程序刚开始发现不了,但程序执行一段时间,重复执行泄露代码,程序就会崩溃!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老猿的春天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值