相关疑难解决方法(0)

508
推荐指数
8
解决办法
5万
查看次数

对象指针向量上的vector :: erase()是否会破坏对象本身?

我有一个指向对象的向量.我需要从向量中删除一个元素并将该元素放在另一个列表中.

我读到擦除可以用来从向量中删除对象,但我还读到它在执行之前调用对象析构函数.

我需要知道擦除对象是否也会破坏它.

c++ stl vector

40
推荐指数
2
解决办法
6万
查看次数

如何使用shared_ptr避免内存泄漏?

请考虑以下代码.

using boost::shared_ptr;
struct B;
struct A{
    ~A() { std::cout << "~A" << std::endl; }
    shared_ptr<B> b;    
};
struct B {
    ~B() { std::cout << "~B" << std::endl; }
    shared_ptr<A> a;
};

int main() {
    shared_ptr<A> a (new A);
    shared_ptr<B> b (new B);
    a->b = b;
    b->a = a;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有输出.没有调用desctructor.内存泄漏.我一直认为智能指针有助于避免内存泄漏.

如果我需要在类中进行交叉引用,我该怎么办?

c++ boost memory-leaks smart-pointers shared-ptr

23
推荐指数
1
解决办法
2万
查看次数