向量对象内存在巨大时在堆栈或堆上分配?

时间:2019-12-19 05:29:58

标签: c++

假设我有一个巨型类型

struct Giant
{
      unsigned int data[32500];
};

我在函数中启动了Giant的向量

void myfunc
{
      std::vector<Giant> vec(1);
}

问题是:vec变量应该在堆栈中,sizeof(vec)应该是向量大小+ Giant的大小,对吧?

1 个答案:

答案 0 :(得分:1)

与法线向量比较:(具有相同的int类型)

#include<iostream>
#include<vector>
struct Giant
{
      unsigned int data[32500];
};
int main()
{
      std::vector<Giant>vec(1);
      std::vector<int>vec2(1);
      std::cout<<sizeof(vec)<<std::endl<<sizeof(vec2);
}

屈服:

24
24

这意味着分配给堆栈的vec和vec2的大小相同,而位于堆中的元素可能不同。

相关问题