gpt4 book ai didi

c++ - 返回 shared_ptr 时的引用计数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:26 25 4
gpt4 key购买 nike

下面的代码是不是意味着当这个函数返回时,这个类里面的request对象仍然持有这个对象的引用?

boost::shared_ptr<Request> RequestList::GetRequest()
{
boost::mutex::scoped_lock(listmtx);
request = boost::shared_ptr<Request>(new Request());
return request;
}

用过的:

request = requests->GetRequest();  //Ref count is two on request object when it returns??

即使在完成上述分配后,我们在request 上的引用计数仍然为 2...

其中 requests 只是一个 RequestList 指针(原始指针)...

最佳答案

request is a private class variable...

然后有两个shared_ptr 对象带有new Request() 的句柄:调用函数中的一个和私有(private)类变量。两者都合理地提高了重新计票。

除非有理由让私有(private)类变量存在,否则将其删除。至少,将其重命名为 last_request,因为它确实如此。

(当然,当 last_request 被另一个对 GetRequest 的调用重新分配时,它对先前请求的句柄就会消失。)

关于c++ - 返回 shared_ptr 时的引用计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3905135/

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