gpt4 book ai didi

c++ - 与 C++ 中的数组相比,为什么一个类使用这么多内存

转载 作者:行者123 更新时间:2023-11-30 03:22:47 24 4
gpt4 key购买 nike

<分区>

我想存储 1000 个矩形的 3 个属性。我可以用两种不同的方式做到这一点。我可以使用结构或数组,但我试图找出哪种解决方案使用的内存最少。这里的代码:

struct Figure {
unsigned int color;
virtual void foo() {}
};

struct Rectangle : public Figure {
unsigned int width,height;
};

int main() {
Rectangle r[1000];
unsigned int r2[1000][3]; //This take less memory, The first entry is rectangle number
// the next is color, width and height
std::cout<<"Type name is "<< typeid(r[0]).name() <<sizeof(r2)<<" "<<sizeof(r)<<std::endl;
return 0;
}

输出是:

类型名称是 9Rectangle12000 24000

如您所见,结构对象数组使用的内存是普通数组的两倍。为什么会这样?由于多态结构,我预计我的情况下的结构数组会使用更多内存,但不会那么多。

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