Shi*_*bli 11 c++ vector sizeof
关于这个话题已有一个话题,但我仍有疑虑.要计算向量的大小,哪一个是正确的:
sizeof(VEC) + sizeof(int) * VEC.capacity()
Run Code Online (Sandbox Code Playgroud)
要么
VEC.capacity() * (sizeof(VEC) + sizeof(int))
Run Code Online (Sandbox Code Playgroud)
Arm*_*yan 16
你对矢量的大小是什么意思?矢量对象的大小就是
sizeof(vec);
Run Code Online (Sandbox Code Playgroud)
如果您对向量在堆上分配了多少内存感兴趣,可以使用
vec.capacity()*sizeof(T)
Run Code Online (Sandbox Code Playgroud)
所以,如果你添加这些,你会得到你因为向量而"丢失"了多少内存.
vec.capacity()*sizeof(T) + sizeof(vec)
Run Code Online (Sandbox Code Playgroud)
请注意,确切分配了多少内存取决于实现.只是在大多数(如果不是全部)实现中,上面的公式实际上是正确的(或近似正确的).