如果之前已经回答道歉,我一直无法找到答案。
我正在Win32应用程序中进行一些绘画,并且有很多场景我只需要绘制一个对象(例如一个矩形)。我目前为此创建画笔的方式如下:
HBRUSH sampleBrush = CreateSolidBrush(RGB(1, 119, 158));
SelectObject(myDC, sampleBrush);
// Do some painting on DC using brush
DeleteObject(sampleBrush);
创建画笔,存储句柄,选择DC,使用画笔,释放内存。
但是,如果我要做以下事情:
SelectObject(myDC, CreateSolidBrush(RGB(1, 119, 158)));
是否需要进行任何内存管理,因为我没有将句柄存储到我创建的画笔中?如果是这样,我将如何释放内存?
答案 0 :(得分:3)
函数CreateSolidBrush
无法知道您是如何使用它的。它无法知道您没有存放手柄,因此执行一些自动清理。由于CreateSolidBrush
的文档指定您应使用返回的句柄调用DeleteObject
,因此您应确保遵守这些要求。
如果您不存储句柄,则会失去对该句柄的访问权限,并且无法确保该对象被销毁。