我目前有涉及到一个问题:C++ vector - push_back(* new obj())和push_back(obj())有什么区别?
vector<myObj> myVector;
Q1。请告诉我它们的区别如下两行之间:
a) myVector.push_back(*new myObj());
b) myVector.push_back(myObj());
注:我知道,行a)是不好的做法,因为它是通过动态分配MyObj中的内容,将其复制到载体中,因此之前导致内存泄漏不能被释放...
但是,我在假设这两行应该导致包含完全相同内容的向量,虽然看起来这种假设是不正确的。我正在开发RUNS的软件,使用a)(我知道,这是造成漏洞,请尽量忽略这一点),但在b)行中出现各种不同的exc_bad_access错误。 Q2302。任何人都可以解释为什么这可能是?
编辑:当发布此我本来认为我的问题,必须与在产生的向量内容差一些,但我的问题是实际上与落实“三法则” http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming) 谢谢@WhozCraig,@ juanchopanza & @Alex Antonov为您提供帮助!
'*新MyObj中()'我为大家介绍内存泄漏操作。 – Borgleader
请显示'myObj'的定义。 –
如果不崩溃(一),但与(b)中,在某个地方'myObj'你可能不会实现[三规则(http://en.wikipedia.org/wiki/Rule_of_three_做(C%2B%2B_programming))。我差点赌上它。 – WhozCraig