关于释放内存的问题 本帖最后由 cherryli007 于 2011-04-13 11:27:39 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当你用完m_hDIB_frame1,m_hDIB_frame2后再调用::GlobalUnlock(m_hDIB_frame1);::GlobalFree(m_hDIB_frame1);应该就可以释放了。 把HDIB hDIB_g = NULL; 移到函数体外面去。在这里面你又要新建句柄又要返回句柄当然不可能释放了。在外面HDIB hDIB_g = NULL; ……m_hDIB_frame1=GetDIBFromCG1(m_hCG1, 0);::GlobalUnlock(hDIB_g);::GlobalFree(hDIB_g);Sleep(10);m_hDIB_frame2=GetDIBFromCG1(m_hCG1, 0);::GlobalUnlock(hDIB_g);::GlobalFree(hDIB_g);…… 我开始就是按照你这个思路写的,具体语句也和你写的一样,我把hDIB_g定义为全局变量,然后加上了你写的那样先解除锁定后释放的语句,但是一运行就出错,说“0x004040fa”指令引用的“0x00000000”内存。该内存不能为“read”。要终止程序,请单击“确定”要调试程序,请单击“取消” 上网一找“指令引用的“0x00000000”内存。该内存不能为“read”。”的原因实在太多了。不好一下子说清楚是怎么回事。你可以单步执行一下,看看到第几句时出错了。估计是内存分配时的问题可能较大。 关于 wsaasyncselect 这个i/o模型的使用 请问 vc2005 如何调用com组件? 要用IP过滤钩子做个IP过滤程序,要看那些方面的资料?? 如何在字符串里找到“\”,并在找到的位置前再加一个“\”? 在list控件的上,改变一列宽度的时候将触发什么消息? 着急的问:帮忙看看我的程序错误出在什么地方,谢谢! 中国少数民族信息产业之路 如何知道某DLL中函数的声明形式? 使用sqlapi连接数据库 如何才能把一个位图中的数据提出来? 如何获取滚动条滚动的大小 如何让窗体放在最前
::GlobalFree(m_hDIB_frame1);应该就可以释放了。
在这里面你又要新建句柄又要返回句柄当然不可能释放了。
在外面
HDIB hDIB_g = NULL; ……
m_hDIB_frame1=GetDIBFromCG1(m_hCG1, 0);
::GlobalUnlock(hDIB_g);
::GlobalFree(hDIB_g);
Sleep(10);
m_hDIB_frame2=GetDIBFromCG1(m_hCG1, 0);
::GlobalUnlock(hDIB_g);
::GlobalFree(hDIB_g);
……
“0x004040fa”指令引用的“0x00000000”内存。该内存不能为“read”。
要终止程序,请单击“确定”
要调试程序,请单击“取消”
不好一下子说清楚是怎么回事。
你可以单步执行一下,看看到第几句时出错了。
估计是内存分配时的问题可能较大。