2
|
Agrudge Amicus · 技术社区 · 5 年前 |
![]() |
1
3
尽管向量被称为“容器”,从逻辑的角度来看,但从编译器的角度来看,向量只是一个(模板)类,它包含一个指针(或者几个指针,取决于实现)动态分配内存,可能还有一些其他数据成员用于管理此内存。vector类根据需要使用动态分配的内存进行扩展和收缩。
所以,打电话的时候
其他具有固定长度的“container”类(如std::array或std::pair)可能在实现时没有指向动态分配内存的指针,因此在它们上使用sizeof运算符可能会按预期工作。但是,这是特定于实现的,不可依赖。 这一对的第一个元素似乎占用8个字节而不是4个字节的原因可能是 alignment issue . 第一个元素包含一个4字节的成员,而向量可能包含至少一个8字节的成员(可能是一个64位指针)。 |
![]() |
Rajesh · 添加偏移量时数组名称上的sizeof运算符 7 年前 |
![]() |
fatdragon · 结构具有并集时的意外大小 7 年前 |
![]() |
razorozx · C++如何获取父数据类型的sizeof? 7 年前 |
![]() |
WonFeiHong · 通过sizeof会发生什么 7 年前 |
![]() |
Sato · 如何使gcc警告未定义的结构? 8 年前 |
![]() |
msc · C和C中sizeof算子的不同输出++ 8 年前 |
![]() |
Raul GrigoraÈcu · 指向数组最后一个元素的C指针 8 年前 |