为什么NEW 会失败 ? 内存泄漏? GDI+ 那些地方会引起内存泄漏?
我使用 GDI+ 编写ATL COM组件。
在使用NEW 分配内存空间时, 发现,NEW 失败,
比如:
Bitmap *bm= new Bitmap(dstw,dsth,PixelFormat8bppIndexed );
对应我都有一个delete
delete bm;
这一对语句会被反复调用。
但是在重复调用若干次(次数不定)后,
再次运行到:
Bitmap *bm= new Bitmap(dstw,dsth,PixelFormat8bppIndexed );
返回的bm=0
在反复调用过程中,我留意了一下内存几乎没有变化。(是不是能说明内存被及时释放了?)
请问,为什么会失败, 是内存泄漏? 导致new 的内存分配发生在曾经被分配过的内存块上而出错?
但是,所有的NEW 都有一个对应的delete, 难道GDI+ 只是用delete的方法无法完全释放内存?
我不是太懂C++内存分配的原理,请教各位高手。