具有首次访问权限的智能指针

问题描述 投票:0回答:1

TL; DR:是否存在类似于std::unique_ptr的智能指针类的实现,该类仅实例化封装的对象并在首次取消引用指针时分配内存?

背景:

我们有一个表示正在运行的进程的Process类。当进程执行网络通信时,我们记录该活动并将其存储在作为NetworkActivity类成员的Process类对象中。

NetworkActivity是具有许多成员变量的大型类。我试图减少内存使用并仅对实际上通过网络进行通信的一小部分进程实例化NetworkActivity对象。

我当然可以在unique_ptr类中使用Process

std::unique_ptr<NetworkActivity> networkActivityPtr;

但是我每次取消引用networkActivityPtr时都需要检查nullptr。如果我忘记了这样的检查并且尚未分配内存,程序将崩溃。

当第一次取消智能指针的引用时,unique_ptr是否没有构造该对象的变体?

c++ c++14 smart-pointers
1个回答
0
投票

答案为否。参见:Dr. Dobbs article。您将需要编写自己的包装器。

但是,当您的进程首次启动时,其初始化代码将创建该实例。

© www.soinside.com 2019 - 2024. All rights reserved.