假设我有一个巨型类型
struct Giant
{
unsigned int data[32500];
};
我在函数中启动了Giant
的向量
void myfunc
{
std::vector<Giant> vec(1);
}
问题是:vec
变量应该在堆栈中,sizeof(vec)
应该是向量大小+ Giant的大小,对吧?
答案 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的大小相同,而位于堆中的元素可能不同。