new 出来的 CDC 对象, 使用DeleteDC() 是否应该把指针Delete掉?
我们知道 CDC * pDC = GetDC();可以获取到当前的CDC ;
GetDC() 对应的释放方法是归还资源 ReleaseDC(); 就OK了
那么CDC * pDC = new CDC;
就应该对应pDC->DeleteDC().
DeleteDC()是把资源DC 给释放掉了..
那么指针pDC该怎么办呢? 它依然指一块动态内存.
只是里面的内容被释放掉了,但是这个内存并没有释放.
理论上来讲的话,就应该更补上一句 Delete pDc;
这样就可以释放这块内存了.. 但是问题就出现在这里.
在一些程序当Delete pDC不会报错,有就会报错,情况很不稳定,所以向各位大鸟们请教请教~~
A)
CDC *pDC = GetDC()
pDc->ReleaseDC();
CDC * pNewDc = New CDC;
if (NULL != pNewDc)
pNewDc->DeleteDC();
pNewDc = NULL;
B)
CDC *pDC = GetDC()
pDc->ReleaseDC();
CDC * pNewDc = New CDC;
if (NULL != pNewDc)
pNewDc->DeleteDC();
if (NULL != pNewDc)
delete pNewDc;
pNewDc = NULL;