繁体   English   中英

间接推std :: array与智能指针堆

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM