进程的终止
       如果想要终止进程的运行,有下面四种方法:
(1)进程的主线程的入口函数正常返回。(最安全的、正常的退出方法);
(2)本进程内的人一个线程调用ExitProcess函数。(不推荐);
(3)另一个进程的线程调用TerminateProcess函数。(不推荐);
(4)进程中的所有线程自行终止。(很少出现)。
       先来看看进程正常终止时会发生什么:
(1)进程中的所有剩余线程全部终止;
(2)所有由此进程创建、或打开的内核对象句柄就会关闭(如果内核对象没有被别的进程打开,系统会将内核对象撤销,如果有,不会被撤销,引用计数将减1),所有用户对象、GUI对象均被释放;
(3)进程内核对象变成受信状态;
(4)系统将进程内核对象的退出码值由STILL_ACTIVE改为指定的退出码;
(5)进程内核对象使用计数减1;
      推荐的是用第一种方法终止进程,也就是让进程的主线程正常返回,因为这样才能保证对进程所引用的所有资源正确释放。
      进程的主线程返回时,系统将有下面的动作:
(1)调用该线程创建的所有对象的析构函数,撤销对象释放资源;
(2)操作系统释放线程的堆栈内存;
(3)系统将进程的退出码设为线程的返回值;
(4)系统将进程内核对象的使用计数减1。
     所以,如果进程非正常退出,将不能保证资源的正常释放。最典型的例子,我们可以在先定义一个类,类的析构函数可以打印一句“deconstrutor is called,”,然后main函数中定义一个该类的实例对象,接下来不让主函数正常返回,而调用ExitProcess函数,你会发现该对象的析构函数 并没有被调用。