我有一对指针,假设为 std::pair< A*, B* >* pointerpair。我分配了它的内存,在使用完这个pair之后,我调用 delete pointerpair。 那么它是否会调用 delete A 和 delete B 并完全释放内存? 如果我只调用 delete A 和 delete B 而没有调用 delete pointerpair,那么就会造成内存泄漏吗?
不。 然而,在STL和Boost中,有一系列称为智能指针的类,它们可以自动删除存储在其中的指针所指向的对象。但是,在这些智能指针类之外,存储在STL / Boost容器中的任何裸指针都只是被视为指针。例如,你可以定义一个字符串指针的集合。这个集合将使用指针值进行排序,而不是按字符串的字典顺序排序(除非你提供了比较函数)。