CreatePen 不会产生内存泄漏?
CreatePen doesn't create memory leaks?
我创建了一个 HPEN 并使用以下代码选择了它:
HPEN hPen = CreatePen(PS_SOLID, 1, RGB(0,0,0));
oldPen = (HPEN)SelectObject(hdc, hPen);
在此之后,我正在绘制一些东西并选择旧笔:
SelectObject(hdc, oldPen);
要查看内存泄漏,我使用:
#define CRTDBG_MAP_ALLOC
#include <crtdbg.h>
/* This in the main function */
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
如果我关闭应用程序,则不会显示内存泄漏。但我认为如果我不使用 DeleteObject() 删除对象,就会出现内存泄漏。
我已经用这个测试了标志,它起作用了:
int* leak = new int;
所以标志不会有问题。你能帮我解决这个问题吗?或者告诉我更多关于为什么没有显示内存泄漏的信息吗?
谢谢!
CreatePen是一个win32 api函数,它(可能)在Windows内核中分配一些内存,以便在绘制时使用。使用 new/new[] 分配的内存由 C 运行时库分配,因此将由 CRT 调试函数捕获。它们是专门为捕获分配的内存泄漏而创建的 malloc/new/new[]
正如其他人所说,您将无法以这种方式追踪GDI泄漏。
我个人为此目的使用 GDIView 并对此感到满意(如果其他人可以推荐其他工具来跟踪 GDI 泄漏,我将不胜感激)。
此外,您需要在使用完笔后将其删除(DeleteObject(hPen)
)。
此致敬意。
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- 瓦尔格林德的内存泄漏使用新的
- 无法找出我的代码中的内存泄漏
- C++ 结构内部的unordered_map会导致内存泄漏问题吗?
- 可视化 使用 VS Code 查找C++应用程序中的内存泄漏
- Shared_ptr双链接列表内存泄漏
- C++ 在类中使用常量引用文本时 O2 内存泄漏