我的应用程序(VC MFC)运行gflags启用Pageheap以跟踪页面堆损坏.
现在应用程序崩溃并显示此错误,我无法解释这些行(除了感觉资源的可用性)
任何人都可以了解造成应用程序崩溃的原因究竟是什么?
(info:应用程序是一个多线程的应用程序,在多处理器计算机中运行大约500个线程)
kernel32!RaiseException+53
msvcrt!_CxxThrowException+36
mfc42u!AfxThrowResourceException+19
mfc42u!AfxRegisterWndClass+ab
mfc42u!CAsyncSocket::AttachHandle+5c
mfc42u!CAsyncSocket::Socket+25
mfc42u!CAsyncSocket::Create+14
Run Code Online (Sandbox Code Playgroud)
小智 6
同样的问题让我疯了但最后我修好了它并且它正在发挥作用.这是MFC套接字库的错误,当在一个线程[除了主应用程序线程]之外,如果我们尝试做类似的事情
CSocket socket;
socket.Create();
Run Code Online (Sandbox Code Playgroud)
它会引发一个未处理的异常.我发现了一篇关于它的文章了解微软对此的评价
那些来自微软的东西,但这也没有帮助我.所以这是我找到的解决方法,我希望它可以帮助像我这样的沮丧的家伙.
在线程内部,执行此操作
CSocket mySock;
SOCKET sockethandle = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
mySock.m_hSocket= sockethandle;
Run Code Online (Sandbox Code Playgroud)
之后不要调用mySock.Create,因为已经通过分配套接字句柄创建了它.我不确定我们是否可以使用mySock.Attach(sockethandle),因为我还没有尝试过.
之后,您可以直接致电Connect等.
当你完成使用套接字时,不要调用mySock.Close()
- 而是调用closesocket(mySock.m_hSocket);
并释放套接字对象.如果Attach在上面的情况下工作,那么我想我们需要在这里做Detach来释放套接字.
祝好运
归档时间: |
|
查看次数: |
4047 次 |
最近记录: |