我正在实施"变种"必须具有尽可能小的内存占用的类,并使用共享指针机制存储一些对象。
为此,我想在所有变量类的类中建立一个联合。这包括一些shared_ptr&#39。
operator =和copy构造函数必须更改变量的数据类型,因此切换到union中的另一个成员。在切换到shared_ptr时,应该将此值重置为null而不删除/删除指针。有没有办法做到这一点?
当然,还有其他方法可以实现这一点,但在我的情况下,它们通常更复杂,安全性更低或内存消耗更多。欢迎任何建议。
谢谢!
答案 0 :(得分:3)
重置为null并不足够;的实现
std::shared_ptr
我知道也有一个指向引用的指针
count,也必须删除。
您需要跟踪当前联盟中的内容,以及 使用对析构函数的显式调用和new的放置 任何时候类型改变(和构造函数中的构造) 和析构者)。