我正在编写一个类库,为 Windows 注册表的 C API 提供方便的面向对象前端。然而,我很好奇,处理HREG
s 的最佳做法是什么,例如我的key
类被复制的情况。
我可以
- 分配一个堆整数并将其用作引用计数。在句柄上调用 RegCloseKey() 并在引用计数为零时释放整数。
- 使用句柄的内置功能,而不是维护引用计数,而是
DuplicateHandle()
在复制注册表项对象时调用 HREG。然后总是在析构函数中调用 RegCloseKey。
DuplicateHandle()
设计要简单得多,但我担心以这种方式设计的东西是否会严重影响应用程序的性能。因为我的应用程序通过数十万个键进行递归,所以复制此对象的速度是一个敏感问题。
DuplicateHandle()
该函数的固有开销是什么?