TerminateThread的问题
程序一启动就开始一个线程,做一个比较耗时的网络操作(10~30s),有可能程序退出了,而这个操作都没完成。dll由别人提供,也没提供终止操作之类的方法,所以程序退出了可以在析构等或者使用TerminateThread。而等待的还没返回的话,进程没结束,再次启动程序,由于某些库的终结操作没完成,所以启动没反映。
使用TerminateThread则发现一个奇怪的问题,如果堆栈内的string是CString类型,被强制结束了则可看到明显的内存泄漏。但如果是stl的string或者TCHAR []则没有,最奇怪的是为什么内存泄漏,原因就是堆栈不会释放,CString或者其他自定义类的析构函数不会被调用到,但stl的string在程序退出时竟然调用到析构了,调用栈都是crt的代码或dll,不明白究竟做了什么。