CImage:Load 加载图片失败,

CImage::Load 加载图片失败,求助~
在MFC中用CImage::Load (path)加载一个20M的jpg文件时,load失败。

CImage SrcImage;
if(!SUCCEEDED(SrcImage.Load(FileName))) return FALSE;  //这里一直失败,原因是下记返回了E_OUTOFMEMORY

inline HRESULT CImage::Load( LPCTSTR pszFileName ) throw()
{
if( !InitGDIPlus() )
{
return( E_FAIL );
}

Gdiplus::Bitmap bmSrc( (CT2W)pszFileName );
if( bmSrc.GetLastStatus() != Gdiplus::Ok )
{
return( E_FAIL );
}

return( CreateFromGdiplusBitmap( bmSrc ) ); // 这里返回了E_OUTOFMEMORY
}

同样的代码在WIN7没问题,XP出问题。
load失败后,关闭MFC程序,重新启动,再进行Load就可以成功。
把该图片移动到一个新位置时一定失败(比如C盘移到D盘)。
load小图片(10M以内)不会有问题。

求大神解答~
------解决思路----------------------
从现象描述看,应该是内存脆片太多,函数申请不到一片足够大的内存,20M的JPG文件图片应该非常大,其转换为位图的需要的空间估计的上百兆,系统刚开机后,有足够的内存可以申请,随着运行,脆片越来越多,知道无法申请到足够大的内存
------解决思路----------------------
内存不够啊

程序启动后,第一次就失败吗?
如果是几次后才失败, 是不是有内存没有释放?

------解决思路----------------------
Load之前 CImage::Destroy 一下,
任务管理器监视下内存的增长情况, 注意IDE调试器输出, 有可能存在内存泄漏