gpt4 book ai didi

c++ - 空 vector 占用的空间是否与指向当前设置为 nullptr 的类型的指针一样多?

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:20 25 4
gpt4 key购买 nike

我有一个类:

class Foo{

std::vector<Sprite*> vec;
Sprite* bar = nullptr;

}

然后我做:

Foo zoom;

在程序执行的这个点上,哪个占用的空间更大? vec 还是 bar ?

编辑:

在下面的情况下,如果我这样做:Foo zoom; 会占用更少的空间:

class Foo{
Sprite* bar1 = nullptr;
Sprite* bar2 = nullptr;
Sprite* bar3 = nullptr;
}

class Foo{
std::vector<Sprite*> vec;
}

最佳答案

在这段代码中:

class Foo{

std::vector<Sprite*> vec;
Sprite* bar = nullptr;

};

bar 将是指针的大小,这取决于平台。通常,它将是 32 位(4 字节)或 64 位(8 字节)。

vec 将是 std::vector 对象的大小,这取决于您的标准库是如何实现的。

所以我们不能绝对肯定地说,但是我们可以根据标准要求std::vector 做什么来做出很好的猜测该类型的对象将大于单个指针。

大了多少?很难说。重要吗?没有。

通过声明指针数组* 来抵制尝试构建您自己的std::vector 的冲动。你不会比编译器更聪明。与使用标准库的类相比,您最终得到的代码既大又慢。这就是他们在那里的目的。

__
* 除非你的内存分析器实际上告诉你这里有问题。

关于c++ - 空 vector 占用的空间是否与指向当前设置为 nullptr 的类型的指针一样多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44542267/

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