【发布时间】:2014-02-16 08:59:26
【问题描述】:
我目前遇到的问题与以下相关:
vector<myObj> myVector;
第一季度。请告诉我以下两行之间的区别:
a) myVector.push_back(*new myObj());
b) myVector.push_back(myObj());
注意:我意识到 a) 行是不好的做法,因为它在将 myObj 的内容复制到向量之前动态分配它会导致内存泄漏,因此无法释放...
然而,我假设这两行应该导致向量包含完全相同的内容,尽管这个假设似乎是不正确的。我目前正在开发的软件使用 a) 行运行良好(我知道,我知道这会导致泄漏,请暂时忽略这一点)但在 b) 行出现各种不同的 exc_bad_access 错误而崩溃。
第二季度。谁能解释为什么会这样?
编辑:发布此内容时,我最初认为我的问题必须与结果矢量内容的某些差异有关,但我的问题实际上与履行“三法则”http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming) 有关 感谢@WhozCraig、@juanchopanza 和@Alex Antonov 的帮助!
【问题讨论】:
-
*new myObj()我向您介绍内存泄漏运算符。 -
请显示
myObj的定义。 -
如果它不与 (a) 一起崩溃,但与 (b) 一起崩溃,则在
myObj的某处,您可能无法满足 Rule of Three。我几乎敢打赌。 -
抱歉等待@WhozCraig!会尽快解决,如果有帮助,请告诉您!非常感谢您的建议!
标签: c++ vector memory-management heap-memory push-back