小编典典

分配向量时,它们使用堆上的内存还是堆栈上的内存?

all

以下所有陈述都是正确的吗?

vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack

vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack

vector<Type*> vect; //vect will be on stack and Type* will be on heap.

Type在内部vector或任何其他 STL 容器中如何分配内存?


阅读 74

收藏
2022-07-06

共1个答案

小编典典

vector<Type> vect;

将在堆栈上分配vector,即标头信息,但在空闲存储(“堆”)上分配元素。

vector<Type> *vect = new vector<Type>;

分配免费存储中的所有内容。

vector<Type*> vect;

vector在堆栈上分配 ,并在空闲存储上分配一堆指针,但是这些点的位置取决于您如何使用它们(例如,您可以将元素 0 指向空闲存储,将元素 1
指向堆栈)。

2022-07-06