这个内存会被正确释放吗?

3

我有一对指针,假设为 std::pair< A*, B* >* pointerpair。我分配了它的内存,在使用完这个pair之后,我调用 delete pointerpair。

那么它是否会调用 delete A 和 delete B 并完全释放内存?

如果我只调用 delete A 和 delete B 而没有调用 delete pointerpair,那么就会造成内存泄漏吗?

2个回答

3

不。

然而,在STL和Boost中,有一系列称为智能指针的类,它们可以自动删除存储在其中的指针所指向的对象。但是,在这些智能指针类之外,存储在STL / Boost容器中的任何裸指针都只是被视为指针。例如,你可以定义一个字符串指针的集合。这个集合将使用指针值进行排序,而不是按字符串的字典顺序排序(除非你提供了比较函数)。


2
不会自动删除,您必须明确地删除它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接