问个多线程的问题,请有经验丰富的程序员帮忙,在线等,急!!!!!!!!
我的程序是多线程的单文档程序,在关闭窗口时,调试遇到下面的情况:程序卡在了MFC库的afxcrit.cpp文件的112行。
void AFXAPI AfxUnlockGlobals(int nLockType)
{
ASSERT(_afxCriticalInit);
ASSERT((UINT)nLockType < CRIT_MAX);
// unlock specific resource
ASSERT(_afxLockInit[nLockType]);
#ifdef _DEBUG
ASSERT(--_afxResourceLocked[nLockType] >= 0);
#endif
LeaveCriticalSection(&_afxResourceLock[nLockType]);
==>} //程序停止
请看看会是什么原因造成的?怎么解决?
问题点数:50、回复次数:11Top
1 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-07-27 10:39:41 得分 20
调用堆栈?
Top
2 楼txl_2002(我的奋斗)回复于 2005-07-27 10:53:26 得分 0
能不能详细解释一下引起的类似原因!!!!!!!Top
3 楼AntonlioX(做人要厚道)回复于 2005-07-27 10:57:19 得分 2
upTop
4 楼txl_2002(我的奋斗)回复于 2005-07-27 11:12:37 得分 0
在调试窗口中输出了如下信息:
“TcpServer.exe”: 已卸载“C:\WINNT\system32\upengine.dll”
HEAP[TcpServer.exe]: Heap block at 001545F0 modified at 00154628 past requested size of 30
TcpServer.exe 中的 0x77f813b1 处未处理的异常: 用户断点 。Top
5 楼DentistryDoctor(不在无聊中无奈,就在沉默中变态)回复于 2005-07-27 11:18:58 得分 20
HEAP[TcpServer.exe]: Heap block at 001545F0 modified at 00154628 past requested size of 30
说明你对缓冲区进行了越界访问。Top
6 楼qrlvls( 空 气 )回复于 2005-07-27 11:20:12 得分 5
你打开调用栈窗口看看是由哪里调用引起的Top
7 楼txl_2002(我的奋斗)回复于 2005-07-27 11:45:52 得分 0
堆栈状态:
NTDLL.DLL!77f813b1()
NTDLL.DLL!77fb76aa()
NTDLL.DLL!77fcffd0()
NTDLL.DLL!77fb6ca7()
NTDLL.DLL!77fb73fd()
NTDLL.DLL!77fad09b()
NTDLL.DLL!77f95051()
NTDLL.DLL!77f95027()
NTDLL.DLL!77fad16e()
> mfc71d.dll!AfxUnlockGlobals(int nLockType=15) 行112 C++
mfc71d.dll!CWnd::OnWndMsg(unsigned int message=1395624, unsigned int wParam=2012898777, long lParam=1395624, long * pResult=0x77f8c5e1) 行2023 C++
00130000()
NTDLL.DLL!77f8c60d()
NTDLL.DLL!77fa65d9()
NTDLL.DLL!77f8c5e1()
NTDLL.DLL!77f8c60d()
Top
8 楼dirdirdir3(风)回复于 2005-07-27 12:16:25 得分 3
有没有溢出?Top
9 楼txl_2002(我的奋斗)回复于 2005-07-27 12:29:47 得分 0
有没有溢出,我不知道,我也在问啊。
请高手解答了
Top
10 楼txl_2002(我的奋斗)回复于 2005-07-27 12:53:32 得分 0
我的程序中还用到了网络套接字,会不会是SOCKET引起的?Top
11 楼txl_2002(我的奋斗)回复于 2005-07-27 16:07:03 得分 0
我的问题已解决,是由于我完成端口模型上的一个函数引起的。
高兴,散分。
多谢 DentistryDoctor(My heart will fly,in the sky.) 的热情帮助!Top




