|
1
3
矢量中的数据是动态分配的,并存储在另一个内存位置,它不是矢量的一部分,矢量只有一个指向该内存的指针。分配的内存是连续的,因此所有分配的字节在内存中都是相邻的。 在您的情况下,类std::vector的大小是24字节,内存中其他地方额外分配的内存的大小是40字节。因此,总共64个字节将被分配到您的计算机内存中。 |
|
|
2
2
是的,您可以看到指针的位置每次增加8,因为矢量的数据是连续存储的。 |
|
|
3
2
一个向量使用多少字节?矢量在两个地方使用内存:1。在矢量对象本身内,以及2。在堆上,存储向量元素。 编译器实现者在如何分配内存方面有很大的自由度。但是,通常情况下,矢量对象本身包含大小不变的部分。以下是我在Microsoft的实现中发现的内容:
数据元素存储在堆上,可能与其他特定于实现的信息一起存储(或不存储)。
对于给定的矢量
原始问题中的向量是指针的向量,特别是指向
这里有一个简短的程序来计算使用的字节总数。希望最初的海报能在他的系统上运行,并告诉我们他得到了什么。
我在MSVC上运行,目标是x64,所以我的指针每个是8字节。显然,矢量对象中存储了第四项,因为
在阅读Microsoft的标头源代码时
当我以x86为目标重新编译时,大小减少了一半。这很有道理,因为
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |