关于CreateDIBSection第四个参数的问题? 我读取将屏幕一块矩形区域截取下来后,将位图信息读取到第四个参数里面,将该指针作为函数返回值,因为要等到第二次截取同一区域做比较,所以要将数据保存下来,但是比对完后,该指针指向的内存区域怎么释放啊?这个问题纠结好久了,程序运行总会有内存泄露。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序运行没问题,但是总存在内存泄露,free也释放会出错,GlobalUnlockPtr也不行!!要一直循环前后比对,这样下去内存不消耗完了,纠结啊!! 不要自己释放CreateDIBSection()函数返回回来的指针,当位图对象删除掉的时候,这块区域就会被释放掉。出现内存漏泄的现象很多是因为你的位图的大小计算不对,位图的大小应该这样计算:int nScanLine = bmpInfoHeader.biBitCount /8 * bmpInfoHeader.biWidth;nScanLine += (nScanLine %4)?(4 - nScanLine%4):0;//调整它进行四字节对齐imageSize = nScanLine * bmpInfo.biHeight; 成功解决了,重新开辟个堆来存储这些数据,返回其地址,OK BYTE* pByte = new BYTE[width*height*3]; memcpy(pByte,lpBitmapBits,width*height*3); DeleteDC(hMemDC); DeleteObject(directBmp); return pByte; DSW工程文件的竟然打不开,然后它的提示是:DBNETLIB[(ConnectionOpen(Invalid Instance().)无效的连接 关于指针的基础问题 限定鼠标区域,为什么一移动窗口限定就失效 交流:做网络管理-〉桌面管理软件的程序员进来认识一下 如何判断一个文件正在使用??? 怎样设置用CreateMenu()创建的二级单的可见性?(附代码) 有一字符串str,我想取得str的ASCII码,该怎样写代码? 有人在使用WinPcap开发数据包捕获程序吗?? 请教调节音量问题 串口操作的几个问题············· 请教输入法转换汉字过程? VC+Win7下添加组件的问题
出现内存漏泄的现象很多是因为你的位图的大小计算不对,位图的大小应该这样计算:
int nScanLine = bmpInfoHeader.biBitCount /8 * bmpInfoHeader.biWidth;
nScanLine += (nScanLine %4)?(4 - nScanLine%4):0;//调整它进行四字节对齐
imageSize = nScanLine * bmpInfo.biHeight;
BYTE* pByte = new BYTE[width*height*3];
memcpy(pByte,lpBitmapBits,width*height*3); DeleteDC(hMemDC);
DeleteObject(directBmp);
return pByte;