How to use C++ standard smart pointers with Windows HANDLEs?

后端 未结 10 1102
Happy的楠姐
Happy的楠姐 2020-12-17 19:04

I was wondering if there is a way to use unique_ptr with Windows HANDLEs?

I was thinking to replace the std::default_delete with s

10条回答
  •  佛祖请我去吃肉
    2020-12-17 19:42

    You can create a Deleter class that will release the handle instead of calling delete().

    You can see in this LINK how they've solved deleting arrays with a shared_ptr (unique_ptr also has a constructor that recieves a Delete class)

      struct handle_deleter
      {   
        void operator ()( HANDLE handle)
          { CloseHandle(p); }
      };
    
      HANDLE blah = GetSomeHandle();
      unique_ptr myPointer(blah,handle_deleter);
    

提交回复
热议问题