【发布时间】:2011-05-15 08:12:51
【问题描述】:
以下 C++ 代码是否存在内存泄漏?
list.push_back(new String("hi"));
据我了解,任何 std 集合/容器中的 push_back 总是会制作副本。因此,如果复制了新字符串,则没有什么可以删除新字符串,对吧?因为 push_back 之后没有引用它...
我是对还是错?
谢谢。
Jbu
编辑:我想我错了,因为 new 将返回一个指针......我们将始终拥有能够删除新字符串的指针
【问题讨论】:
-
取决于
list的定义。 -
取决于
list是什么。假设它是std::list<String*>,@UncleBens 是正确的:大部分时间仍然可以正确清理。但是您必须手动进行清理;std::list不会为你做的。 -
是的。因为变量“list”实际上是一种类型,它有一个名为“push_back”的函数,其主体为空。
标签: c++ memory new-operator memory-leaks