文档章节

资源创建了用完后一定要释放

 四彩
发布于 2012/07/10 07:51
字数 240
阅读 236
收藏 0

这几天在尝试C语言用Win32 API写个小程序,有个函数是要在指定位置显示一串数字,为了图省事,把  CreateFontIndirect 放在 SelectObject 里了,代码是这样的:  

    SelectObject(hdc,  CreateFontIndirect(&logfont) );
    SetTextColor(hdc, RGB(0,0,0));
    SetBkMode(hdc, TRANSPARENT);
    DrawText(hdc, s, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);


开始运行没问题,可是在这个函数执行了142次后字体变成另外一种了。试了N次,很准确的是第142次突然变了。
琢磨琢磨后想到:是不是字体只创建没释放?
修改代码如下:

   HFONT f = CreateFontIndirect(&logfont);
   SelectObject(hdc, f);
    SetTextColor(hdc, c);
    SetBkMode(hdc, TRANSPARENT);
    DrawText(hdc, s, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE);
    DeleteObject(f);

运行正常。


原来想的是这是个子函数,调用的时候创建字体,函数结束后会自动释放。
实际上函数结束并没有自动释放,所以在第142次调用后字体资源耗尽了。

© 著作权归作者所有

共有 人打赏支持
粉丝 25
博文 49
码字总数 77226
作品 0
茂名
私信 提问
Go连接MySql数据库too many connections错误解决

这几天用Go写了个简陋的服务器,连接Mysql数据库,提供api给其他程序调用来实现增删改产等服务。Go的版本是1.2,使用的驱动是go-sql-driver/mysql。但是在有一定量的查询结果以后,会出先too...

WAKnow
2014/03/06
0
4
关于数据库连接的关闭问题?

之前一直使用的模式是,当需要使用数据库操作的时候进行数据库连接,用完之后就立即关闭。 现在有个timer,每2000ms要进行一次数据库查询操作,程序一直运行,如果有多个客户端同时运行,也是...

影非弦
2015/04/27
448
1
Go连接MySql数据库too many connections

Go中连接数据库的连接池:当你需要和数据库通信时,就会从连接池里面取出一个连接,和数据库交互。使用完的闲置的连接会回到连接池,等待下一次的调用。如果连接池里面没有闲置的连接,会自动...

牛牛张
2015/06/05
0
0
请手动释放你的资源(Please release resources manually)

我从来不认为这个问题是个问题, 直到昨天. 昨天晚上的时候, 我提交了一个RFC, 关于引入finally到PHP, 实现这个功能的出发点很简单, 因为我看见不少人的需求, 另外还有就是Stas说, 一直只看到...

虫虫
2012/07/26
4.9K
24
BREW SDK 九大功能之系统服务

版权声明:本文为半吊子子全栈工匠(wirelesscom,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wirelesscom/article/details/6491813 BREW的系统服务包含广泛,应用程序管...

abel_cao
前天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS 选择器参考手册

CSS 选择器参考手册 选择器 描述 [attribute] 用于选取带有指定属性的元素。 [attribute=value] 用于选取带有指定属性和值的元素。 [attribute~=value] 用于选取属性值中包含指定词汇的元素。...

Jack088
今天
1
0
数据库篇一

数据库篇 第1章 数据库介绍 1.1 数据库概述  什么是数据库(DB:DataBase) 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据...

stars永恒
今天
2
0
Intellij IDEA中设置了jsp页面,但是在访问页面时却提示404

在Intellij IDEA中设置了spring boot的jsp页面,但是在访问时,却出现404,Not Found,经过查找资料后解决,步骤如下: 在Run/Debug Configurations面板中设置该程序的Working Directory选项...

uknow8692
昨天
3
0
day24:文档第五行增内容|每月1号压缩/etc/目录|过滤文本重复次数多的10个单词|人员分组|

1、在文本文档1.txt里第五行下面增加如下内容;两个方法; # This is a test file.# Test insert line into this file. 分析:给文档后增加内容,可以用sed 来搞定;也可以用while do done...

芬野de博客
昨天
2
0
深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部