gpt4 book ai didi

vector - 向量的向量的内存布局是什么?

转载 作者:行者123 更新时间:2023-11-29 08:23:21 25 4
gpt4 key购买 nike

我知道 vector 的一部分(实际数据)存储在堆中,而一些数据(包含长度、容量和指向堆中实际数据的指针的结构)存储在堆栈中。

向量的向量(即向量的元素是其他向量,例如字符串向量)呢?这个外部容器向量的哪些部分存储在堆和栈上?各个内部元素呢?

最佳答案

Vec 是不正确的(包含指针、长度和容量的结构)总是存储在堆栈中。您可以将任何类型(不包括不能移动的自引用类型)从堆栈移动到堆,方法是将它放在 Box 中。 , Vec或其他使用堆的智能指针。只需考虑一个简单的类型,如 i64 : 它可能存储在堆栈中(或者如果编译器选择存储在寄存器中),但是如果你写 vec![7i64] , 你有一个 i64存储在堆上,堆栈上唯一剩下的就是 Vec本身(指针加上长度和容量)。

通过这个类比,不难看出 String 也是如此。 : 它可以在堆栈上,但您可以通过创建 Vec<String> 将它放在堆上.因此,如果你有一个 Vec<String>长度为 100,有 101 个独立的堆分配:一个由 Vec 拥有String 各拥有一个

另见

关于vector - 向量的向量的内存布局是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54956898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com