进程中的函数有什么要求

seraphim1025 2008-04-05 08:49:41
我在进程中写了一个抓图的函数,如下
CDC pDC;
pDC.CreateDC("DISPLAY", NULL, NULL, NULL);
CDC memDC; //定义一个兼容DC;
memDC.CreateCompatibleDC(&pDC);
CBitmap m_pBitMap;
CBitmap *m_pOldBitmap;
m_pBitMap.CreateCompatibleBitmap(&pDC,m_rect.Width(),m_rect.Height());
m_pOldBitmap = memDC.SelectObject(&m_pBitMap);

memDC.BitBlt(0, 0, m_rect.Width(), m_rect.Height(), &pDC, m_rect.left, m_rect.top, SRCCOPY);

memDC.SelectObject(m_pOldBitmap);
///////////////////////////////////

BITMAP btm;
m_pBitMap.GetBitmap(&btm);
DWORD size = btm.bmWidthBytes * btm.bmHeight;
LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size);
现在的问题是编译能通过,可是在调试的时候m_pBitMap.GetBitmap(&btm); 出现错误。请问大侠们这是为什么。谢谢!!!!
...全文
322 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
scq2099yt 2008-04-05
  • 打赏
  • 举报
回复
内存泄漏单步调试
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
我是初学者,内存泄漏,谁能告诉我怎样解决,谢谢!!!
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
另外还有
Detected memory leaks!
Dumping objects ->
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {145} normal block at 0x003AA578, 21 bytes long.
Data: < >x > EC 97 3E 78 04 00 00 00 04 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {124} normal block at 0x003A8060, 23 bytes long.
Data: < >x > EC 97 3E 78 06 00 00 00 06 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {102} normal block at 0x003A81E0, 21 bytes long.
Data: < >x > EC 97 3E 78 04 00 00 00 04 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {101} normal block at 0x003A8190, 20 bytes long.
Data: < >x > EC 97 3E 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {100} normal block at 0x003A8140, 20 bytes long.
Data: < >x > EC 97 3E 78 03 00 00 00 03 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\barcore.cpp(156) : {96} normal block at 0x003A7EE0, 80 bytes long.
Data: < > 00 00 00 00 00 01 00 00 00 01 00 08 00 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {95} normal block at 0x003A7E28, 124 bytes long.
Data: < u: > 00 00 00 00 00 00 00 00 00 00 00 00 D0 75 3A 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {94} normal block at 0x003A7D70, 124 bytes long.
Data: < |: > 00 00 00 00 00 00 00 00 00 00 00 00 D8 7C 3A 00
i:\visual studio 2005\getpixel\cutscreen\cutscreenview.cpp(22) : {93} client block at 0x003A7CD8, subtype c0, 92 bytes long.
a CCutScreenView object at $003A7CD8, 92 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {88} normal block at 0x003A7860, 26 bytes long.
Data: < >x > EC 97 3E 78 09 00 00 00 09 00 00 00 01 00 00 00
i:\visual studio 2005\getpixel\cutscreen\mainfrm.cpp(45) : {85} client block at 0x003A76A8, subtype c0, 148 bytes long.
a CSplash object at $003A76A8, 148 bytes long
i:\visual studio 2005\getpixel\cutscreen\mainfrm.cpp(19) : {84} client block at 0x003A74F8, subtype c0, 372 bytes long.
a CMainFrame object at $003A74F8, 372 bytes long
i:\visual studio 2005\getpixel\cutscreen\cutscreendoc.cpp(17) : {83} client block at 0x003A7430, subtype c0, 140 bytes long.
a CCutScreenDoc object at $003A7430, 140 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\plex.cpp(29) : {82} normal block at 0x003A7378, 124 bytes long.
Data: < q: > 00 00 00 00 00 00 00 00 00 00 00 00 E0 71 3A 00
{81} client block at 0x003A7318, subtype c0, 32 bytes long.
a CDocManager object at $003A7318, 32 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {80} normal block at 0x003A7288, 77 bytes long.
Data: < >x< < > EC 97 3E 78 3C 00 00 00 3C 00 00 00 01 00 00 00
i:\visual studio 2005\getpixel\cutscreen\cutscreen.cpp(75) : {79} client block at 0x003A71E0, subtype c0, 108 bytes long.
a CSingleDocTemplate object at $003A71E0, 108 bytes long
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {77} normal block at 0x003A7188, 23 bytes long.
Data: < >x > EC 97 3E 78 06 00 00 00 06 00 00 00 01 00 00 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(141) : {76} normal block at 0x003A7128, 33 bytes long.
Data: < >x > EC 97 3E 78 10 00 00 00 10 00 00 00 01 00 00 00
{75} normal block at 0x003A70D8, 20 bytes long.
Data: < >x >x >x> 04 00 00 00 00 98 3E 78 00 98 3E 78 00 98 3E 78
{74} normal block at 0x003A7078, 32 bytes long.
Data: <$R x p: 8q: > 24 52 1E 78 04 00 00 00 DC 70 3A 00 38 71 3A 00
f:\rtm\vctools\vc7libs\ship\atlmfc\src\mfc\oleinit.cpp(84) : {71} client block at 0x003A6F98, subtype c0, 68 bytes long.
a CCmdTarget object at $003A6F98, 68 bytes long
Object dump complete.
线程 'Win32 线程' (0xbe0) 已退出,返回值为 3 (0x3)。
程序“[2536] CutScreen.exe: 本机”已退出,返回值为 3 (0x3)。
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
“CutScreen.exe”: 已加载“I:\Visual Studio 2005\GetPixel\debug\CutScreen.exe”,已加载符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\ntdll.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\kernel32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugMFC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_c8452471\mfc80d.dll”,已加载符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.DebugCRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_f75eb16c\msvcr80d.dll”,已加载符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\msvcrt.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\gdi32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\user32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\shlwapi.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\advapi32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\rpcrt4.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\comctl32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\oleaut32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\ole32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\imm32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\lpk.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\usp10.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFCLOC_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_3415f6d0\mfc80CHS.dll”,未使用调试信息生成二进制文件。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\uxtheme.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\MSCTF.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\version.dll”,未加载任何符号。
“CutScreen.exe”: 已卸载“C:\WINDOWS\system32\version.dll”
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\MSCTFIME.IME”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\unispim6.ime”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.Windows.GdiPlus_6595b64144ccf1df_1.0.2600.2180_x-ww_522f9f82\GdiPlus.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\shell32.dll”,未加载任何符号。
“CutScreen.exe”: 已加载“C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll”,未加载任何符号。
线程 'Win32 线程' (0x460) 已退出,返回值为 0 (0x0)。
“CutScreen.exe”: 已加载“C:\WINDOWS\system32\mslbui.dll”,未加载任何符号。
CutScreen.exe 中的 0x00419378 处最可能的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
CutScreen.exe 中的 0x00419378 处未处理的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
程序“[3672] CutScreen.exe: 本机”已退出,返回值为 0 (0x0)。
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
忽略后出现下面的冲突 在使用btm.bmWidth时
CutScreen.exe 中的 0x00419378 处最可能的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
CutScreen.exe 中的 0x00419378 处未处理的异常: 0xC0000005: 读取位置 0x4365335e 时发生访问冲突
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
忽略后图像调用冲突的提示
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
Debug assertion failed

Treazy 2008-04-05
  • 打赏
  • 举报
回复
出现什么错误!
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
谢谢 arong1234
我刚刚学VC++,谢谢你的宝贵建议。
arong1234 2008-04-05
  • 打赏
  • 举报
回复
你的内存泄漏和这段代码貌似无关,你双击错误信息应该能带你到分配这个内存的地方
至于你的debug error,一般会告诉你assert是在哪个文件哪行发生的,看看是不是可以估计出错原因
你代码的问题是安全性检查太少,总是假定每步都成功,但是这种假定是步成立的(你没有检查过任何一个返回值)
arong1234 2008-04-05
  • 打赏
  • 举报
回复
编程没有那么简单,能有个高手告诉你一个步骤,你就可以用来解决问题了。如果真那么简单,为什么就象微软这样的牛X公司都有hotfix,所以不要对问问题期望太高,指望一击即中,你也可以高枕无忧了。调试是需要很多经验和技巧的,也是需要非常强的耐心的。不是一蹴而就的。
我曾经为了一个bug花了半年时间,想想这不是很容易吧?
arong1234 2008-04-05
  • 打赏
  • 举报
回复
不要只想着问怎么解决,你原因还没有,怎么去解决
内存泄漏自然需要你按照10楼说的去找看看哪个变量没释放
[Quote=引用 9 楼 seraphim1025 的回复:]
怎样解决这个问题
[/Quote]
Eleven 2008-04-05
  • 打赏
  • 举报
回复
看看是哪里用了new ,没有使用delete释放!
seraphim1025 2008-04-05
  • 打赏
  • 举报
回复
怎样解决这个问题

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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