在程序结束时,
1.在响应WM_CLOSE消息的函数中先主动的释放所有的资源后,然后按MFC的正常消息流程结束程序;我称之为温和结束程序。。
2.在关闭程序时,什么都不做,在响应WM_CLOSE消息的函数中直接给程序发送WM_QUIT消息结束程序,程序中的资源让OS自动回收;我称之为暴力结束程序。。我想问一下他们之间有什么区别???对程序有什么影响???
都是结束程序,那么2是否来得更直接一些????

解决方案 »

  1.   

    我现在的程序是,释放资源出错,关闭后会弹出在NTDLL.DLL中访问到无效的句柄,直接WM_QIUT都没什么问题。
      

  2.   

    就如ycf8788(小白传说3)
    如果不涉及到数据的保存,这种方法应该问题不大
      

  3.   


    没错,进程退出时系统会清理的非常干净的,这个大可以放心,包括所有相关内核对象的引用计数也会做递减,且进程所使用的全部内存都会整体unmap掉的,可以参见linux的源码
      

  4.   


    在程序中创建的指针,就是new出来的,当程序退出时,没有做删除动作,系统也会自动释放吗?
      

  5.   

    当然会了,不光是new出来的,进程代码本身的所占用的堆,线程的堆栈等所有进程相关的东西会全部被系统清理的干干净净的,否则系统大量运行有内存泄露问题的进程的话,不早就宕机了?
      

  6.   

    一次没问题,比如说我只创建一个实例,释放ok,没问题。如果我创建两个实例,释放第一个OK也没问题,接着在释放第二个,就出问题,错误为在NTDLL.dll中访问到无效的句柄
      

  7.   

     我一般都是用暴利的 继续关注ing
      

  8.   

    进程的自然死亡(return结束main):可以正常释放对象,资源.
    进程的自杀(调用某些API):不能释放局部非静态变量.
    暴力结束(abort);他杀(被其他进程杀死):不能销毁任何对象.
      

  9.   

    只释放一次的话,还是会在DestroyWindows时弹出访问到了无效的句柄错误。