欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > vector的两种实现

vector的两种实现

2025/5/4 17:17:32 来源:https://blog.csdn.net/An15294874732/article/details/147685859  浏览:    关键词: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 模式添加迭代器校验无额外调试字段
内存对齐可能插入填充字节紧密排列,无填充
代码生成保守优化,兼容性优先激进优化(如内联更多操作)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词