【发布时间】:2012-04-06 16:09:09
【问题描述】:
我在我的应用程序中发现我的 AVI 视频播放器内存泄漏。我有以下代码:
...
LPBYTE pChunk = new BYTE[lSize];
if(!pChunk)
return false;
hr = AVIStreamReadFormat(pStream, AVIStreamStart(pStream), pChunk, &lSize);
if(hr)
{
delete [] pChunk;
return false;
}
m_pVideoFormats[i] = (LPBITMAPINFO)pChunk;
稍后当需要删除视频时,我只是删除:
if(m_pVideoFormats[i])
delete [] ((LPBYTE)m_pVideoFormats[i]);
这会因为我如何投射这个指针而导致内存泄漏吗?谢谢!
【问题讨论】:
-
不,对象在被删除时知道自己的大小,而不管任何转换。作为旁注,不需要检查是否与 NULL 不同,因为删除 NULL 指针是完全有效的。
标签: c++ memory pointers memory-leaks