C++ 侵入式\u ptr=>\u块\u类型\u有效(pHead->nBlockUse)
我在我的代码中使用了boost'intrusive_ptr',但当我删除一些对象时,我崩溃了 事实上,我在类中使用了相同的“侵入式”并返回它,如下所示:C++ 侵入式\u ptr=>\u块\u类型\u有效(pHead->nBlockUse),c++,pointers,C++,Pointers,我在我的代码中使用了boost'intrusive_ptr',但当我删除一些对象时,我崩溃了 事实上,我在类中使用了相同的“侵入式”并返回它,如下所示: typedef intrusive_ptr<Node> ref; class MyContainer { ref SmartPointer; }; class Compiler { private: ref MyNode; public: ref getMyNode() { return MyNode; } ref p
typedef intrusive_ptr<Node> ref;
class MyContainer
{
ref SmartPointer;
};
class Compiler
{
private:
ref MyNode;
public:
ref getMyNode() { return MyNode; }
ref process() {MyNode.Reset(); ... return MyNode; }
};
MyContainer * c1 = new MyContainer();
c1->SmartPointer = compiler.process();
delete c1; <= CRASH
这取决于很多代码,这里没有显示。你确定这是真正的代码吗?您无法分配给c1->MyNode,因为MyContainer没有MyNode成员。并且编译器未声明。而且没有过程函数。当然,这不是正确的代码!因为我有超过200Kb的代码在玩这个!因此,很难显示现实中的错误在哪里!我只是想说明我认为问题出在哪里!注意,我已经更新了示例@user346113如果没有正确的编译代码,我们就无能为力。我明白了!但是谢谢你的帮助!!!