gpt4 book ai didi

C++/Boost 共享资源类,用于管理资源生命周期,如 shared_ptr

转载 作者:太空狗 更新时间:2023-10-29 19:46:30 27 4
gpt4 key购买 nike

Boost 或其他任何包含容器的容器是否会像共享指针一样工作,但允许我控制共享“资源”在其生命周期结束时发生的情况?我想封装一个可以传递的对象,但是当不再需要时可以以上下文定义的方式关闭。

例如,我可能想创建并传递一个文件句柄,知道当它超出范围时,文件将自动关闭,但我不想删除句柄。

我可以自己实现它,但如果框架已经存在,我宁愿不参与其中——毫无疑问有人做得更好。我不能使用 boost::shared_ptr,至少不能以它的正常形式使用,因为资源在生命周期结束时不应该被删除。

最佳答案

您是否知道 std::shared_ptr 可以采用自定义删除器类?这实际上不需要使用“删除”或“释放”,但可以很容易地使用某种其他类型的机制(例如引用计数机制的release 等)。

这是一个非常简单的例子:

std::shared_ptr<FILE> foo(fopen("la", "r"), fclose);

删除器只需要是一个采用 shared_ptr 包装的指针类型的函数。在这种情况下,当 foo 超出范围时,shared_ptr 将为您关闭该文件。 (注意:这不是一个完全明智的实现,因为没有检查错误值。这只是一个示例)。

关于C++/Boost 共享资源类,用于管理资源生命周期,如 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com