内存,此乃兵家必争之地,内存是何其重要,虽然windows现在规定一个进程在32位系统中可以自由使用32g的内存,但是这些是依靠虚拟交换来实现的,
在windows的中的CWnd中,如果你需要使用GetDc, ReleaseDc,则就对不起,每一次就造成了四个字节的内存泄漏。那怎么办。
使用::GetDC 和 ::ReleaseDC,就是使用系统自己的API 来实现。
例子如下:
for (int i = 0; i < 1000; i++)
{
pDC = GetDC ();
ReleaseDC (pDC);
}
是泄漏、泄漏、再泄漏。
解决办法:
for (int i = 0; i < 1000; i++)
{
hDC = ::GetDC (m_hWnd);
//m_hwnd 是你的应用程序中的某个窗口的句柄,通过这个句柄,然后得到这个句柄的 device context
::DrawText (hDC, L"Testing...", 10, &rect, DT_CENTER);
::ReleaseDC (m_hWnd, hDC);
}
ok,没有了内存泄漏,我们又保住了丢失的内存,取得了阶段性的成果。
详见 微软的关于此次内存泄漏的原文:
http://support.microsoft.com/kb/819635/zh-cn