数组与向量,内存布局

用户名

有人可以确认以下两者之间的区别:

class A{
    public:
        std::vector<int> a;
        std::vector<int> b;
};

class B{
    public:
        std::array<int, 1000> a;
        std::array<int, 1000> b;
};

A的对象包含两个指向堆上两个随机分配区域的指针吗?

相反,第二类对象将为两个数组分配连续的内存(取决于对象是堆栈还是堆的位置),这将是连续的。这些数组会彼此相邻放置(class不会这样A)?

马特·彼得森

的一个实例内的每个矢量实例都class A将包含三个指针[或两个指针和一个size_taka std::vector::size_type,或一个指针和两个size_t]。元素中的存储std::vector<int> a, b将从堆中分配。的内容ab不能保证彼此接近。中的每个元素a,并b会从额外的指针引用连续存储,所以预留,例如缓存局部性将上述两种溶液之间非常相似。

但是,如果您做类似的事情

A x;
x.a.resize(1000);
x.b.resize(1000); 

在新鲜的堆上,机会确实存在a并且b确实相距不远。

在B的实例中,将有两个数组,每个数组足以容纳1000个整数,并且它们之间可能会有一些填充。除了填充,这些数组将彼此相邻。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

POD对象向量的内存布局

来自分类Dev

向量和数组在LLVM的内存布局中有什么区别?

来自分类Dev

动态数组的内存布局是什么?

来自分类Dev

带数组的C结构的内存布局

来自分类Dev

Numpy数组与C ++向量的内存效率

来自分类Dev

大数组C ++,向量无内存

来自分类Dev

向量数组是否完全是连续的内存?

来自分类Dev

C ++内存管理:从函数中的向量创建新数组

来自分类Dev

内存布局的解释

来自分类Dev

AC程序的内存布局

来自分类Dev

C ++对象内存布局

来自分类Dev

内存布局练习C ++

来自分类Dev

程序的C内存布局

来自分类Dev

内存布局的解释

来自分类Dev

C ++对象的内存布局

来自分类Dev

向量的内存泄漏

来自分类Dev

向量的内存泄漏

来自分类Dev

管理向量分配的内存

来自分类Dev

向量数组

来自分类Dev

向量数组还是数组向量?

来自分类Dev

如何读取指向派生类的基类指针数组的内存布局

来自分类Dev

如何读取指向派生类的基类指针数组的内存布局

来自分类Dev

3D 复杂数组如何在内存中布局

来自分类Dev

C ++以内存安全的方式使用给定向量的大小创建2D数组

来自分类Dev

C ++以内存安全的方式使用给定向量的大小创建2D数组

来自分类Dev

使用数组初始化时的 C++ STL 向量内存管理?

来自分类Dev

向量数组中的向量比较

来自分类Dev

在C ++复数的内存布局中

来自分类Dev

关于对象的内存布局的假设