Ami*_*mir 1 c++ containers stl lifetime dynamic-memory-allocation
我将对象添加到函数中的向量。该代码如下所示:
class MyObj
{
int a;
int b;
MyObj( int ai, int bi )
{
this->a = ai;
this->b = bi;
}
};
vector<MyObj> myVec;
void foo()
{
MyObj objInst( 10, 20 );
myVec.push_back( objInst );
}
Run Code Online (Sandbox Code Playgroud)
我期望对象从堆栈中获取空间,因此在函数返回之后,应该释放它们的内存。以我的经验,事实并非如此,即到目前为止,可以在函数外部访问容器中的对象,没有问题。有人可以告诉我为什么会这样吗?STL容器是否复制传递给它们的对象的数据并将其保存在堆中或全局内存中?
非常感谢@Louen的评论。阅读这篇文章并学到了很多东西。 https://www.internalpointers.com/post/c-rvalue-references-and-move-semantics-beginners