求救!资源释放问题

zj_alarry 2002-05-18 11:41:59
我用vc编一个win32控制台程序,提供某种网络服务。在主线程里主要是开一个
socket进行监听,若有客户连接,则开个线程提供服务。现在的问题是,如果程序
非正常退出,比如强行关闭程序,我怎么释放以前申请的资源?
主要流程为:
main()
{
在此用全局变量(g_Global)申请资源;
......
while(1)
{
clientSocket = new CSrvSocket; //创建一个新的读写socket
g_Global.m_SrvSocket.Accept(rwSocket); //接受客户连接
CreateThread(NULL,0,socketThreadProc,(LPVOID)rwSocket,0,NULL); //服务线程

}

return 0;
}

我本来释放资源在g_Global的析构函数里做的,现在程序中途关掉,就直接
在while循环里结束了,申请的资源不能释放,请教高手,该怎么办?如果
解决?谢谢!
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zj_alarry 2002-05-18
  • 打赏
  • 举报
回复
谢谢大家,但现在不知道如何捕捉到控制台窗口[x]被按下的消息阿,如果这个
知道了,问题就解决了,在那里加循环结束标志,或直接释放资源就行了,但关键
是不知道怎么得到这个信息?还望高手继续指教!
hanphy 2002-05-18
  • 打赏
  • 举报
回复
我也有试过类似的试验,就是如何避免控制台窗口[X]被按下时关闭程序,没有释放资源而内存泄漏。我从signal()函数(关于中断处理)去考虑的。但没有解决。
rkt_dijkstra 2002-05-18
  • 打赏
  • 举报
回复
在循环体里加个判断,如果出现中途关掉,强制执行g_Global的析构函数。

2,586

社区成员

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

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