/*-------------------------------------添加代码-------------------------------------*/
HRSRC hResInfo = NULL;
HGLOBAL hGloMem = NULL; //内存
HGLOBAL hGloRes     = NULL; //资源
LPVOID pBuffer = NULL; //资源对应的指针
IStream *pstm;

hResInfo = ::FindResource(NULL, _T("P1"), RT_RCDATA); //查找资源  p1是资源名称 
if(NULL != hResInfo)
{
DWORD dwSize = ::SizeofResource(NULL, hResInfo); //资源大小 if(0 < dwSize)
{
//CSDN Note:  The handle must be allocated as movable and nondiscardable 
hGloMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_NODISCARD, dwSize); //按资源大小分配内存
//此时内存增加了dwSize BYTE* pmem = (BYTE*)GlobalLock(hGloMem); hGloRes = ::LoadResource(NULL, hResInfo);//加载资源
pBuffer = ::LockResource(hGloRes); memcpy(hGloRes, pBuffer, dwSize); //将资源copy到内存中,此时内存 又 增加约dwSize

if(NULL != hGloMem)
{
if(S_OK != CreateStreamOnHGlobal(hGloMem, FALSE, &pstm)) //建立流对象
MessageBox(_T("Wrong"));
}
::FreeResource(hGloRes);
pstm->Release();
::GlobalUnlock(hGloMem);
::GlobalFree(hGloMem); //此时只释放了约dwSize, 也就是约遗漏dwSize内存
// pstm->Release();
}
}

/*-------------------------------------添加代码-------------------------------------*/