android加载字体内存泄露,在Windows GDI中创建和使用字体/避免内存泄漏

我试图在用C编写并在Windows CE 6.0上运行的应用程序中找到内存泄漏的底部.我怀疑这个问题可能与窗口的paint事件的处理有关.在伪代码中它看起来像这样.

LRESULT CALLBACK HandlePaint(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

hdc = BeginPaint (hWnd, &ps);

HFONT logfont;

FONTINFO font1, font2;

memset(&logfont, 0, sizeof(LOGFONT));

//set font options for font1.

font1 = CreateFontIndirect(&logfont);

memset(&logfont, 0, sizeof(LOGFONT));

//set font options for font2.

font2 = CreateFontIndirect(&logfont);

for(int i = 0; i <= SOME_NUMBER; i++)

{

DrawStuff(hdc, font1);

DrawStuff(hdc, font2);

}

EndPaint (hWnd, &ps);

}

INT DrawStuff(HDC hdc, HFONT font)

{

HPEN pen = CreatePen(PS_SOLID, borderWidth, bordercolor);

HBRUSH brush = CreateSolidBrush(backcolor);

SelectObject (hdc, pen);

SelectObject (hdc, brush);

SelectObject(hdc, font);

SetTextColor (hdc, forecolor);

SetBkColor (hdc, backcolor);

DrawText (hdc, pChar, wcslen(pChar), prect, DT_CENTER|DT_VCENTER|DT_SINGLELINE|DT_NOPREFIX);

DeleteObject(font);

DeleteObject(brush);

DeleteObject(pen);

}

我已经注意到在我看到的windows图形示例中,大多数grapics对象似乎都有一个模式:

HBRUSH brush = CreateBrush();

SelectObject(hdc, brush);

// use brush

DeleteObject(brush);

但是,正如您在上面的示例中看到的那样,每种字体都会被创建一次,然后被选中/删除多次.我不确定这样做的含义是什么.是否有理由怀疑内存泄漏?

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值