| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 913 人关注过本帖
标题:内存泄露了,有什么没释放吗
只看楼主 加入收藏
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
结帖率:87.5%
收藏
已结贴  问题点数:100 回复次数:14 
内存泄露了,有什么没释放吗
HINSTANCE    hInstance = (HINSTANCE)GetWindowLong(paintvariable.hWnd,GWL_HINSTANCE);
    HBITMAP hBitmap = LoadBitmap(hInstance,MAKEINTRESOURCE(paintvariable.ID) );
    HDC     hDC = GetDC(paintvariable.hWnd);
    HDC     hDCmem = CreateCompatibleDC(hDC);
    SelectObject(hDCmem,hBitmap);
    BITMAP    bmp;
    GetObject(hBitmap,sizeof(BITMAP),(LPVOID)&bmp);
    for(int i = 0; i < 4; i++)
    {
        BitBlt(hDC,
            paintvariable.x + block[specifickind].x[i] * BLOCKLENGTH, paintvariable.y + block[specifickind].y[i] * BLOCKLENGTH,
            bmp.bmWidth, bmp.bmHeight, hDCmem, 0, 0, SRCCOPY);
    }
    ReleaseDC(paintvariable.hWnd, hDCmem);
    ReleaseDC(paintvariable.hWnd, hDC);
    DeleteObject(hBitmap);
       这是自定义的在一点处输出一张位图的函数,这个函数中有什么没释放吗,在循环输出时,我打开任务管理器,发现内存消耗不断增大
搜索更多相关主题的帖子: 内存 
2012-08-17 09:50
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:9 
要看的不是内存而是GDI对象 任务管理器里有这个项

SelectObject(hDCmem,hBitmap);

不会是这个的问题罢

HGDIOBJ hOld = SelectObject(hDCmem, hBitmap);
……
HGDIOBJ hBMP = SelectObject(hDCmem, hOld);
DeleteObject(hBMP);

我记得书上好像是类似上面的写法
2012-08-17 10:28
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:9 
是不是 搞位图的时候要有个OldBitmap
SelectObject(DC, OldBitmap) 后在DeleteObject()?
猜的啊 时间长了没搞windows都记不太清了。

梅尚程荀
马谭杨奚







                                                       
2012-08-17 10:30
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
Z版和我应该一个意思吧 看来没猜错 嘿嘿

梅尚程荀
马谭杨奚







                                                       
2012-08-17 10:31
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
收藏
得分:0 
看了一下,是释放的时候错了,用GetDC获取的设备环境应该用ReleaseDC释放,而用Create获取的设备应该用DeleteDC释放
2012-08-17 12:03
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:9 
学习。 100分啊。
2012-08-17 13:15
雨落北川
Rank: 2
等 级:论坛游民
帖 子:46
专家分:42
注 册:2012-7-29
收藏
得分:9 
前排学习

404 NOT FOUND
2012-08-17 13:25
姻脂梦
Rank: 6Rank: 6
等 级:侠之大者
帖 子:264
专家分:424
注 册:2012-7-3
收藏
得分:9 
百分啊!能蹭到不?
2012-08-17 14:07
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:9 
估计前两楼会把分抢光。
2012-08-17 15:09
阿鞠尼
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:首尔
等 级:蒙面侠
威 望:5
帖 子:1467
专家分:4442
注 册:2012-5-30
收藏
得分:9 
大牛  助我升级  

喜欢睡觉 却经常熬夜
2012-08-17 15:11
快速回复:内存泄露了,有什么没释放吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016159 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved