我正在编写程序的一部分,我希望在程序的生命周期中保留一个地图,该地图将保存对象B的地址。
我在文件中有一张全球地图
static std::map<A , B*> mapping_;
然后我有一个类和一些初始化
bool NewItem::initialize() {
Panel_ = 0;
if (mapping_[let_] == 0){
B* tabPanel = new B();
mapping_[let_] = tabPanel;
}
Panel_ = mapping_[let_];
当我第二次来初始化()时,它知道这个地图,所以它会跳过if块,但是B对象的成员都以某种方式被释放(0xfeeefeee)。
我不认为我在任何地方删除了Panel_,所以我不知道它是如何解除分配的。
任何想法可能发生什么,或者我做错了什么,或者如何在程序关闭之前将对象B保留在缓存中?
注意:这只是代码的一小部分。