我需要经常在 C++ 程序中创建 HBITMAP 图像,当然我需要在使用后删除这些位图。代码与此类似
HBITMAP hBmp;
while(true) {
hBmp = CreateBitmap(width, height, 1, 8, imageData);
process(hBmp);
DeleteObject(hBmp);
}
我在一个线程中有一个无限循环,不断创建一个 HBITMAP,调用一个使用这个位图的函数,然后删除它。在循环开始时,我检查进程内存使用量是否大于前一个循环,如果是,我打印它。使用 CreateBitmap() 和 DeleteObject() 会导致少量内存泄漏;进程内存使用量偶尔会增加 4KB(有时每 10 秒一次,有时几分钟内没有任何反应)。
我也没有调用进程函数就测试了,问题依旧存在,所以我认为是由于位图处理。此外,我做了另一个测试,在无限循环之外创建图像(所以我只创建一次)并在循环中处理它无限次,并且没有发生内存泄漏。
注意:DeleteObject() 始终返回值 >0(无错误)。
问题是否可能与 DeleteObject() 函数有关?以这种方式创建/删除位图有什么问题吗?
技术说明:Windows XP Borland C++ Builder 5