当前位置: 首页 > ai >正文

vector的两种实现


1. 内存布局对比(以 std::vector<int> 为例)

(1) MSVC 的实现

cpp

class vector {int* _Myfirst;    // 指向首元素的指针int* _Mylast;     // 指向最后一个元素的下一个位置int* _Myend;      // 指向分配容量的末尾// Debug 模式下可能包含额外字段(如迭代器校验)
};
  • 内存占用

    • Release 模式:12 字节(32位)或 24 字节(64位)。

    • Debug 模式:可能增加调试字段(如 _Container_proxy)。

(2) GCC 的实现

cpp

struct _Vector_impl {int* _M_start;     // 指向首元素int* _M_finish;    // 指向最后一个元素的下一个位置int* _M_end_of_storage; // 指向分配容量的末尾
};
  • 内存占用

    • 固定 12 字节(32位)或 24 字节(64位),无调试模式额外开销。


2. 核心差异

特性MSVCGCC
内存增长策略1.5 倍扩容(近似)2 倍扩容
调试信息Debug 模式添加迭代器校验无额外调试字段
内存对齐可能插入填充字节紧密排列,无填充
代码生成保守优化,兼容性优先激进优化(如内联更多操作)
http://www.xdnf.cn/news/3705.html

相关文章:

  • Java并发编程-多线程基础(二)
  • 【信息系统项目管理师】【历年真题】论文中需要会画的图/表格
  • JavaScript基础-运算符优先级
  • GCD 深入解析:从使用到底层实现
  • Linux实验课二(重点:动态链接库,makefile使用)
  • 【JS逆向】某点数据登录逆向分析
  • StandardCopyOption 还有哪些其他可用的常量?
  • Acwing.提高课.迷宫问题(c++题解)
  • CUDA Error: the provided PTX was compiled with an unsupported toolchain
  • JGQ111活性炭吸附气体中二氧化硫实验装置(全不锈钢、带活性炭再生)
  • 【多线程】七、POSIX信号量 环形队列的生产者消费者模型
  • 第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组 2022 年真题(选择题)
  • 结合强化学习RL和SFT各自训练优势,让模型边学边练,从而平衡Zero-RL训练中的模仿和探索!!
  • Python Cookbook-6.17 NuIl对象设计模式的实现
  • PyTorch_张量元素类型转换
  • MySQL索引和事务
  • 接口测试的核心思维(基础篇)
  • Java 中如何实现自定义类加载器,应用场景是什么?
  • 如何快速有效学习数字社会学AI社会学,抓住网络社会学知识图谱,数字社会学50个核心概念
  • Hal库下备份寄存器
  • 字母异位词分组(中等)
  • 继承【Java版】详细讲解
  • 虚幻引擎入门笔记
  • 山东大学计算机组成与设计第七章习题解析
  • Nginx — 防盗链配置
  • 深度学习核心架构:探明四种基础神经网络
  • 从基础到实践(三十六):RTC时钟芯片的应用
  • 多线程系列三:这就是线程的状态?
  • 什么是生成式 AI (GenAI)?
  • 强化学习--2.数学