gpt4 book ai didi

c++ - 在 C 接口(interface)中使用 shared_ptr?

转载 作者:可可西里 更新时间:2023-11-01 16:38:16 26 4
gpt4 key购买 nike

我有一个要移植到 C++ 的 C 库,它大量使用手动引用计数结构。我考虑过使用 shared_ptr 来自动处理引用计数,但我还想维护 C API。旧签名看起来像这样:

Object* object_create(void);
Object* object_retain(Object* o);
void object_release(Object* o);

如果我使用 shared_ptr,有什么方法可以有效地在 C API 中公开此手动引用计数?

最佳答案

shared_ptr 的问题,正如您已经发现的那样,您不能修改引用计数,除非通过构造或销毁实例。所以不,除了为每个构造的 Object 保留一个 shared_ptr 直到它的引用计数降为零,没有办法让它工作,但正确地做这件事需要重做很多的引用计数,所以你得到的很少。

也许 boost::intrusive_ptr是更好的选择。

关于c++ - 在 C 接口(interface)中使用 shared_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126210/

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