【发布时间】:2013-12-02 18:52:21
【问题描述】:
阅读这篇 SO 帖子 stdshared-ptr-exception-safety
所以下面的代码不会有内存泄漏:
std::shared_ptr<int> p3 (new int);
但是跟随一个怎么样:
func(new std::shared_ptr<int>(new int));
如果shared_ptr 的分配抛出bad_alloc 异常并且'new int' 已经被评估,我假设int 被泄露。
他们是否标准定义了new std::shared_ptr 需要首先分配内存然后评估参数new int?
【问题讨论】:
-
每次你说
new并且没有立即在智能指针的构造函数中,你就有潜在的内存泄漏。只是不要说new。 -
没错,小心
new的 -
Kerrek 所说的。另外,你到底为什么要动态分配
std::shared_ptr? -
@Angew,我只是想弥补一下。这不是一个真实的例子。
-
一个更可行但仍然适用的例子是
func(std::shared_ptr<int>(new int), std::shared_ptr<int>(new int));
标签: c++ memory-leaks heap-memory shared-ptr