- 最近写了个控制台程序,设计的是多线程,在主线程中起了2个子线程,然后主线程使用join等待子线程结束,其实子线程在while(true)里面,不会停止。运行一切正常的。但是,在关闭程序的时候总是报错,读取不存在的内存非法,表现跟读取空指针类似。然后就是上网各种搜索,一般别人的情况就是数组越界,指针非法之类的。同事也说可能调用了已经释放的指针,但测下来都不是,最后发现问题是出在jion那。于是,就写了个多线程的简单demo,模拟出了这种情况。
2.在程序非正常退出,比如关闭控制台程序,主程序退出,子线程还在那,没有给子线程发出中断指令,就出现了图中错误。当然,最后主线程退出的话,子线程还是会退出,但是报错就会给用户留下了不好的体验。查了一把,还没找到合适的能捕捉控制台关闭的事件,后续的打算是把控制台改成MFC对话框,那个可以捕获X按钮事件。
#include#include void printing(void *p) {int j = *(int *)p;cout< <