我有一个像下面的情况,我有一些解决内存的问题.基本上我有一个向量来保存指向classA中对象的指针.我有另一个classB,它存储来自vector的classA的指针.它会利用objB.问题是我需要对向量进行操作以擦除指针.
那么我怎么能释放objA的记忆,如下面的描述?
通过值传递objA并在objB中复制?
在objB的析构函数中删除指向objA的指针?(我也不想这样做,因为只有当逻辑完成时,我才需要擦除指针并删除对象.否则,我想保留对象.
vectorA <classA*> vt; ....将多个指针存储到矢量对象
classB*objB = new classB(vt.at(pos));
执行了一些逻辑.如果满足,则需要从向量中删除特定对象.
vt.erase(POS); ==>如果我在这里删除指针,如何释放内存?我无法在此处调用delete,因为objB可能需要稍后使用objA.
classB :: classB(classA*objA){this-> objA = objA; }
那么有没有办法使用Normal指针释放内存,如上所述?由于一些回复指示我使用智能指针,我的问题是使用智能指针是否会对性能造成任何惩罚?(就像C#indeterministic垃圾收集器并不是性能关键应用程序的理想选择).
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |