为什么在全局映射中释放对象

时间:2016-04-04 19:14:29

标签: c++ memory-management

我正在编写程序的一部分,我希望在程序的生命周期中保留一个地图,该地图将保存对象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保留在缓存中?

注意:这只是代码的一小部分。

0 个答案:

没有答案