内存不足?

fyrsl 2008-03-04 04:39:24
我用C++编写了一个文件对话框,在打开文件的时候,出现"内存不足"的警告.这是什么原因呢?我千思万想,仍不知道原因,望高手指点迷津,诚谢!
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyrsl 2008-03-04
  • 打赏
  • 举报
回复
单步执行,打开一幅位图,转到(1)
//计算显示图像所需要内存大小
pbi->bmiHeader.biSizeImage=linewidth*pbi->bmiHeader.biHeight;
//申请内存
lpshowbuf=(BYTE*)HeapAlloc(GetProcessHeap(),0,pbi->bmiHeader.biSizeImage);
//生成对lpshowbuf的二维数组索引
====》(1) image=new BYTE* [pbi->bmiHeader.biHeight];

====》(2) 转到了C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC下的WINCORE.APP文件中的
CATCH_ALL(e)
{
lResult = AfxGetThread()->ProcessWndProcException(e, &pThreadState->m_lastSentMsg);
TRACE1("Warning: Uncaught exception in WindowProc (returning %ld).\n",
lResult);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL

pThreadState->m_lastSentMsg = oldState;
return lResult;
去执行,就在这个地方弹出“内存不足”的对话框。
480: if (!PumpMessage())
00479B91 mov ecx,dword ptr [this]
00479B94 mov edx,dword ptr [ecx]
00479B96 mov ecx,dword ptr [this]
====》(3) 00479B99 call dword ptr [edx+64h]
00479B9C test eax,eax
到第(3)处就不能往下执行了。实在是看不懂,因为在这里它循环了N次。
abupie 2008-03-04
  • 打赏
  • 举报
回复
没有代码,没有详细的错误信息,其他人很难帮到你。
建议加断点调试。
p0303230 2008-03-04
  • 打赏
  • 举报
回复
也许可能 栈空间不够
fyrsl 2008-03-04
  • 打赏
  • 举报
回复
确实,我打开的是一幅位图,并对该位图进行缩放操作.编译没有问题,运行后,我一打开文件就报"内存不足",不知是什么原因?
大熊猫侯佩 2008-03-04
  • 打赏
  • 举报
回复
调试的时候也是这样么?确定实际出错点。
lucian2007 2008-03-04
  • 打赏
  • 举报
回复
不解,是不是对文件进行操作了,将文件的内容读入了内存??!

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧