gpt4 book ai didi

c++ vector - push_back(*new obj()) 和 push_back(obj()) 有什么区别?

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:11 30 4
gpt4 key购买 nike

<分区>

我目前遇到与以下相关的问题:

vector<myObj> myVector;

Q1。请告诉我以下两行之间的区别:

a) myVector.push_back(*new myObj());
b) myVector.push_back(myObj());

注意:我意识到 a) 行是不好的做法,因为它会在将 myObj 的内容复制到 vector 之前动态分配它,从而导致内存泄漏,因此无法释放...

但是,我假设这两行应该导致 vector 包含完全相同的内容,尽管看起来这个假设是不正确的。我目前正在开发的软件使用 a) 行运行良好(我知道,我知道这会导致泄漏,请暂时忽略它)但在 b 行出现各种不同的 exc_bad_access 错误而崩溃。

Q2。谁能解释为什么会这样?

编辑:发布此内容时,我最初假设我的问题一定与生成的 vector 内容中的某些差异有关,但我的问题实际上与满足“三原则”有关 http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming)感谢@WhozCraig、@juanchopanza 和@Alex Antonov 的帮助!

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com