将在堆栈上声明的元素添加到静态数组中

问题描述 投票:0回答:1

假设我有一个std :: vector声明为静态。是否可以将在调用函数的堆栈中本地声明的对象添加到矢量中而不会造成影响?

据我所知,向量将其元素存储在堆中。意思是如果我告诉向量像这样移动元素

myvector.push_back(std::move(element));

它将被存储在堆中,并且其可见性将被保留,对吧?

编辑:我想避免对象被复制,因为它管理其他资源。

我正确吗?还是可以更容易做到这一点?

c++ vector memory-management static move
1个回答
0
投票

您通常可以通过从具有自动或静态存储的对象中进行复制来复制具有动态存储的初始化对象,反之亦然。是否通过移动复制对象无关紧要。

从理论上讲,只有在以某种方式分配时,某些类才能正常工作,但是应该将这些类设为不可复制以防止出现问题。

© www.soinside.com 2019 - 2024. All rights reserved.