【发布时间】:2017-09-23 09:30:37
【问题描述】:
需要对多个来源的缓存指针进行空检查,如下所示:
双指针:
int *ptr = new int(10);
int **pptr = &ptr; // from another source
ptr = nullptr;
cout << *pptr << endl; //nullptr
shared_ptr:
shared_ptr<int> sptr = make_shared<int>(10);
weak_ptr<int> wptr = sptr; //from another source
sptr.reset();
cout << wptr.lock() << endl; //nullptr
关注点:
我并不是特别喜欢双指针语法,更不用说它可能不安全,但我一直听说 shared_ptr 非常慢,因为我并不真正需要引用计数,因为应该只有一个来源负责对象范围。托管内存是否值得损失任何性能?
最好,是否有任何替代方案?
【问题讨论】:
-
不清楚“来自其他来源”是什么意思。您是否使用多个线程来读取和写入这些指针?
-
对不起,我的意思是来自另一个文件,如 cpp.多线程可能在遥远的将来成为可能,但不是现在。
标签: c++ shared-ptr double-pointer