[英]indirectly pushing std::array to heap with smart pointer
std::array
与vector不同,将其对象存储在堆栈中。 下面的代码是我尝试推送std::array
尝试,尤其是(这很重要)...将std::array
管理的项目推送到堆上。
class X{
private:
array<Y,10> data;
}
auto upA = make_unique<X>();
我的示例中std::array
的数组元素是否在堆上? 有没有更优雅的方式将std::array
推入堆?
严格来说,std :: array不会将其对象存储在堆栈中,而是将其存储在std :: array本身存储位置的位置。 换句话说:如果您有一个对象为std :: array的成员,则此std :: array将存储在对象本身存储的任何位置。 因此,如果仅使用运算符new在堆上分配类X的对象,则该对象内的数组也将与对象一起在堆上。
另一方面,您实际上不需要为此创建类和对象:
auto a = new std::array<Y, 10>;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.