CloseHandle()后,一定要再把这个句柄变量设定为NULL吗?

解决方案 »

  1.   

    设置为null是良好的编程习惯.
    不设置的话,可能这个句柄会被在下面误使用.而此时这个句柄代表的内核对象(句柄只是内核对象的索引)可能已经不是你所要的了.就回出现错落.
      

  2.   

    好的编程习惯是这样的,如果你CloseHandle了,然后又使用了这个Handle那么会导致操作失败。赋值NULL,则在使用前可以判断是否为NULL来判断handle的有效性。
      

  3.   

    顶楼上的,设置一下确实是好习惯
    if(hHandle != INVALID_HANDLE_VALUE)
    {
           CloseHandle(hHandle);
           hHandle = INVALID_HANDLE_VALUE;
    }
      

  4.   


    Window核心编程上说关闭后同时要把它设为NULL.
    但是我们项目作第六期开发了,我看了一下没有谁在关闭后再把它设定为null
      

  5.   


    INVALID_HANDLE_VALUE 的值是0xFFFFFFF,也就是-1,不是NULL。
      

  6.   

    sys0009先生/女士请问一下,我们的产品在做维护时,用户的系统崩掉了,但从各种日值都找不到问题,技术骨干们都作了几次CDI了还是找不到问题,今天早上我发现我们的代码里的所有的句柄都是关闭后没有设定为null。因这个导致系统崩溃的几率大吗?
      

  7.   

    编程习惯
    其实没有规定强制说一定要设置成NULL良好的编程习惯,能减少很多issue的产生~
      

  8.   


    有可能。
    不过系统崩溃,你应该用windbg看下用户系统的minidump文件。
      

  9.   

    如果后面还用的话,就置为NULL,如果不用,就不必,当然,置为NULL总是不会错的。
      

  10.   

    不管后面用不用,设为NULL是没错的,好的编程习惯很重要,谁知道将来会不会再增加代码?