【发布时间】:2017-03-10 17:05:57
【问题描述】:
给出以下 C++ 代码:
std::vector<int> myVec;
int* num = new int(1);
myVec.emplace_back(std::move(*num));
如果将具有动态存储持续时间的变量移动到容器中(例如向量),如果 myVec 被销毁(超出范围),是否仍然需要手动删除 num?如果我使用push_back 而不是emplace_back,有什么区别吗?
【问题讨论】:
-
您不是在“移动变量”。您正在添加一个向量元素,其值与堆上对象的值相同。
-
如果你使用
std::string这样的移动构造函数和复制构造函数实际上不同的东西,动机可能会更清楚
标签: c++ vector heap-memory move