问题是这样的:
我现在写一个网关B,使用了一个DLL,此DLL是将数据封装并发送给服务器C的,所以我程序的工作流程是客户端A将数据发送给网关B,再由网关B将数据打包发送给服务器C。所以我的网关是由多线程实现,并且线程工作函数如下:UINT CGatewayView::HttpWorkThreadProc(LPVOID pParam)
{
SOCKET *pSocket = NULL;
SOCKET socket=INVALID_SOCKET; pSocket = (SOCKET*)pParam;
socket = *pSocket;
delete pSocket; //初始化COM组件库
::CoInitialize(NULL); CHttpProxy proxy(socket);
proxy.Run();
//释放COM组件库
::CoUninitialize();
return 0;
}现在问题是的,一个用户连接网关没有问题,但是只要有两个以上用户连接就会出问题,也就是说网关一旦有多线程连接,就会出问题,问题如下:void _Release() throw()
{
if (m_pInterface != NULL)
{
m_pInterface->Release(); }
}在此处报内存出错,不太清楚是什么原因,请达人解答,分不够再加。
我现在写一个网关B,使用了一个DLL,此DLL是将数据封装并发送给服务器C的,所以我程序的工作流程是客户端A将数据发送给网关B,再由网关B将数据打包发送给服务器C。所以我的网关是由多线程实现,并且线程工作函数如下:UINT CGatewayView::HttpWorkThreadProc(LPVOID pParam)
{
SOCKET *pSocket = NULL;
SOCKET socket=INVALID_SOCKET; pSocket = (SOCKET*)pParam;
socket = *pSocket;
delete pSocket; //初始化COM组件库
::CoInitialize(NULL); CHttpProxy proxy(socket);
proxy.Run();
//释放COM组件库
::CoUninitialize();
return 0;
}现在问题是的,一个用户连接网关没有问题,但是只要有两个以上用户连接就会出问题,也就是说网关一旦有多线程连接,就会出问题,问题如下:void _Release() throw()
{
if (m_pInterface != NULL)
{
m_pInterface->Release(); }
}在此处报内存出错,不太清楚是什么原因,请达人解答,分不够再加。
::CoInitializeEx(NULL,COINIT_MULTITHREADED); CHttpProxy proxy(socket);
proxy.Run();
//释放COM组件库
::CoUninitialize();
return 0;