
STL
乔木冠华
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
STL迭代器---萃取
1.知识回顾 一级空间配置器中使用了类型萃取 空间配置器的内存基本工具uninitialized_copy等当中都会进行一步POD性判断 本章重点讲解 类型萃取技术,同时讲述一下迭代器 类型萃取 1.iterator_traits iterator_traits如它的名字一样,是对迭代器进行萃取 //迭代器内部包含5个型别 struct iterator{ typedef Category iterator_category; typedef T value_type; typedef Distance原创 2020-12-18 19:30:27 · 1907 阅读 · 0 评论 -
STL空间配置器导航
STL空间配置器—构造和析构 STL空间配置器—两级空间配置器简介 STL空间配置器—1级空间配置器实现(详细注释) STL空间配置器—2级空间配置器的实现(代码详细注解) STL空间配置器收尾—内存处理基本工具 ...原创 2020-12-17 22:42:24 · 2178 阅读 · 0 评论 -
STL空间配置器收尾---内存处理基本工具
整体框架 在前几期,将前两个部分都讲完了,现在简单地介绍一下内存基本处理工具 uninitialized_copy() uninitialized_fill() uninitialized_fill_n() 这三个函数对应STL的高层次函数 copy(),fill(),fill_n() 这些都是STL算法 什么是POD类型? 优秀博客:https://www.cnblogs.com/DswCnblog/p/6371071.html POD,全称plain old data,plain代表它是一个普原创 2020-12-17 22:36:06 · 181 阅读 · 0 评论 -
STL空间配置器---2级空间配置器的实现(代码详细注解)
二级空间配置器基本准则: 维护16个自由链表,负责16中小型区块的次配置能力 —次层配置 内存池通过malloc配置而得,如果内存池不够,就转调一级配置器 如果需求的块大于128字节,就转调一级空间配置器 二级空间配置器的 次层配置 次层配置: 每次配置一大块内存,并维护与之对应的自由链 如果下次有相同大小的内存需求,则直接从自由一链表拔出. 如果客户释放小额块区,则将内存块插入到自由链表中 free_list[16]: 负责管理16个自由链表.每个节点都是union obj类型 小额块区原创 2020-12-17 18:32:09 · 1563 阅读 · 0 评论 -
STL空间配置器---一级空间配置器实现(详细注释)
一级空间配置器要点 allocate() 直接使用 malloc(),deallocate()直接使用free() 一级空间配置器内部模拟实现了set_new_handler机制 为什么要模拟实现new_handler机制呢 根本原因是因为没有使用operator new 这可能也是一个历史因素 //一级空间配置器要求 //1. 基本上就是对4个转调函数使用malloc 和free 封装 //2. 最为重要的就是处理内存不足的情况暨 set_new_handler // //====== //1原创 2020-12-17 16:34:00 · 154 阅读 · 0 评论 -
effective c++ new_handler
new_handler行为了解:effective c++ 49 什么是new_handler 当 operator new无法分配到足够的内存时,他默认会抛出一个异常 在抛出异常之前,无法分配到足够的内存之后,operator new会先调用 new_handler new_handler一班是由客户指定的: 所以客户必须调用set_new_handler: ---->参考 set_malloc_handler和my_alloc_handler set_new_handler的实现原创 2020-12-15 22:57:14 · 253 阅读 · 1 评论 -
STL空间配置器---两级空间配置器简介
整体框架 上一篇STL空间配置器—构造和析构讲述了第一个部分 由于第二部分比较庞大,所以我决定拆成三次来写完 本篇主要是简单介绍一下两级空间配置器的思路,以及提前说一下new_handler机制 简单介绍 SGI 设计了双层级配置器,第一级配置器直接使用 malloc() 和 free(),第二级则视情况采用不同策略,并采用了复杂的内存池(memory pool) 整理方式。 一级空间配置器 当配置区块超过128bytes时,将使用一级空间配置器 一级空间配置器要点 allocate() 直接使用 ma原创 2020-12-15 22:05:34 · 1012 阅读 · 2 评论