我处于将指针保存在向量中的情况,以便我可以使用它们来释放 dtor 中的内存。
我有一个对象监听来自 boost 信号的回调(槽)。这些对象的范围需要大于创建它的方法,因为它应该监听比创建位置晚得多的 boost 信号。所以,我必须在堆中分配内存并立即使用该实例订阅增强信号。
现在,当持有信号的类被销毁时,应该从内存中释放这些对象。现在我的选择是什么,
当 boost 信号超出范围并且所有监听 boost:bind 对象被销毁时,boost 是否会释放所有这些对象?
共享指针或智能指针会帮助我吗?
我是否必须在信令服务中有一个包含所有这些指针的向量才能在其析构函数中释放?有更好的方法吗?
void methodA(){ CallbackHandler* cbHandler=new CallbackHandler(..); //Allocating in heap as we want to receive boost signals on //this instance even after this method exits signalingService.subscribeToCertainSignals(signalType,boost::bind(&CallbackHandler::boostSlotListener,cbHandler,_1)); } // Boost Signal -SignalingService boost::signal<void (const std::string &msg)> signal1; boost::signal<void (const std::string &msg)> signal2; void subscribeToCertainSignals(const std::string& signalType,boost::function<void (const std::string& str)> bindObject){ this->signal1.connect(bindObject); this->signal2.connect(bindObject); } void sendSignals(A a){ if(check){ this->signal1("somestring1"); }else{ this->signal1("somestring1"); }
};