进程中的函数有什么要求

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); 出现错误。请问大侠们这是为什么。谢谢!!!!
...全文
334 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
怎样解决这个问题
PostgreSQL文学习手册 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据表 数据表 ) 4 一、表的定义: 一、表的定义: 一、表的定义: . 4 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (模式 Schema) Schema) .9 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (表的继承和分区 表的继承和分区 表的继承和分区 表的继承和分区 ) 10 一、表的继承: 一、表的继承: 一、表的继承: .10 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (常用数据类型 常用数据类型 常用数据类型 ) 16 一、数值类型: 一、数值类型: 一、数值类型: .16 六、数组: 六、数组: .22 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (函数和操作符 函数和操作符 函数和操作符 <一>) 25 一、逻辑操作符: 一、逻辑操作符: 一、逻辑操作符: 一、逻辑操作符: .25 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: 四、字符串函数和操作: .27 五、位串函数和操作符: 五、位串函数和操作符: 五、位串函数和操作符: 五、位串函数和操作符: 五、位串函数和操作符: .29 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (函数和操作符 函数和操作符 函数和操作符 <二>) 30 六、模式匹配: 六、模式匹配: 六、模式匹配: .30 八、时间 八、时间 /日期函数和操作符: 日期函数和操作符: 日期函数和操作符: 日期函数和操作符: 日期函数和操作符: 33 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (函数和操作符 函数和操作符 函数和操作符 <三>) 35 九、序列操作函数: 九、序列操作函数: 九、序列操作函数: 九、序列操作函数: . 35 十二、系统信息 十二、系统信息 十二、系统信息 函数函数: .38 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (索引 ) 42 一、索引的类型: 一、索引的类型: 一、索引的类型: 一、索引的类型: .42 四、唯一索引: 四、唯一索引: 四、唯一索引: .43 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (事物隔离 事物隔离 ) 45 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (性能提升技巧 性能提升技巧 性能提升技巧 ) 46 一、使用 一、使用 EXPLAINEXPLAINEXPLAINEXPLAIN EXPLAIN: 46 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (服务器配置 服务器配置 服务器配置 ) 50 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: 一、服务器进程的启动和关闭: . 50 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (角色和权限 角色和权限 角色和权限 ) 52 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库管理 数据库管理 数据库管理 ) 54 一、概述: 一、概述: .54 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (数据库维护 数据库维护 数据库维护 ) 56 一、恢复磁盘空间: 一、恢复磁盘空间: 一、恢复磁盘空间: 一、恢复磁盘空间: . 56 二、更新规划器统计: 二、更新规划器统计: 二、更新规划器统计: 二、更新规划器统计: 二、更新规划器统计: .57 四、定期重建索引: 四、定期重建索引: 四、定期重建索引: 四、定期重建索引: . 59 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (系统表 系统表 ) 61 一、 pg_class: pg_class: pg_class: pg_class:pg_class: 61 三、 pg_attrdef: pg_attrdef: pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef:pg_attrdef: . 63 四、 pg_authid: pg_authid: pg_authid: pg_authid:pg_authid: 64 五、 pg_auth_members: pg_auth_members: pg_auth_members: pg_auth_members:pg_auth_members: pg_auth_members:pg_auth_members:pg_auth_members:pg_auth_members: .64 七、 pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace: pg_tablespace:pg_tablespace: .65 十、 pg_index: pg_index: pg_index:pg_index:pg_index:pg_index: . 67 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (系统视图 系统视图 ) 68 一、 pg_tables: pg_tables: pg_tables: pg_tables: pg_tables: 68 二、 pg_indexes: pg_indexes: pg_indexes:pg_indexes:pg_indexes:pg_indexes: 68 三、 pg_views: pg_views:pg_views: pg_views: pg_views:pg_views: . 68 四、 pg_user: pg_user: pg_user:pg_user:pg_user: .69 五、 pg _roles:_roles:_roles:_roles: _roles: 69 六、 pg_rules: pg_rules:pg_rules:pg_rules: pg_rules: 69 七、 pg_settings: pg_settings: pg_settings: pg_settings:pg_settings: pg_settings:pg_settings:pg_settings: .70 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (客户端命令 客户端命令 客户端命令 <一>) 70 零、口令文件: 零、口令文件: 零、口令文件: .70 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (客户端命令 客户端命令 客户端命令 <二>) 75 七、 pg_dump: pg_dump: pg_dump:pg_dump:. 75 八、 pg_restore: pg_restore:pg_restore:pg_restore: pg_restore:pg_restore:pg_restore:pg_restore: 77 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (SQL (SQL语言函数 语言函数 ) . 83 一、基本概念: 一、基本概念: 一、基本概念: .83 PostgreSQL PostgreSQL PostgreSQL学习手册 学习手册 学习手册 (PL/pgSQL (PL/pgSQL(PL/pgSQL 过程语言 过程语言 ) .86 一、概述: 一、概述:

19,472

社区成员

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

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