在某些类中,我有一个带有指针的静态std :: map.我的问题是,如果我需要在程序结束时删除或自动释放此内存.我关心的是当删除std :: map时,是否通过析构函数正确删除了存储在内部的指针.
谢谢.
如果映射包含使用new(或new []或malloc)分配的指针,则每个指针都需要相应的删除(或删除[]或空闲).
地图的析构函数不知道如何处理光头指针.考虑使用具有适当移动语义的智能指针,如boost智能指针,或者如果你有一个非常新的编译器,C++ 0x智能指针之一.但是,不要在STL容器内使用当前标准的std :: auto_ptr. 请参阅此主题了解原因.
编辑:
正如Billy ONeal指出的那样,boost :: ptr_map也是为此目的而设计的.