STL
奔跑的哇牛
这个作者很懒,什么都没留下…
展开
-
【STL】 SGI空间配置器(二):第一级配置器
对SGI空间配置器的背景介绍可参考此篇博文,空间配置器背景介绍。 这篇主要总结下SGI空间配置器的第一级配置器。 一、源码剖析 #if 0 # include <new> # define __THROW_BAD_ALLOC throw bad_alloc #elif !defined(__THROW_BAD_ALLOC) # include <iostream.h&...原创 2019-08-18 17:37:12 · 296 阅读 · 0 评论 -
【STL】 SGI空间配置器(一):介绍
先看一段伪代码 class Foo{...}; Foo* pf = new Foo; //配置内存,然后析构对象 delete pf; //将对象析构 new算式内含两阶操作: 调用::operator new 配置内存。 调用Foo::Foo()构造对象内容。 delete算式也内含两阶操作: 调用Foo::~Foo()将对象析构。 调用::operator delete 释放内存。 ...原创 2019-08-18 12:14:23 · 343 阅读 · 1 评论 -
【STL】 SGI空间配置器(三):第二级配置器
对第一级配置的介绍可点此第一级配置器。 接下来介绍下第二级配置器。 一、介绍 1.1 问题 我们在申请内存后,系统都要分配对应的空间来管理这些空间,如下图,如果申请的内存块很小,相对的这些管理内存的空间是越浪费的。 第二级配置器多了一些机制,避免上述问题造成的内存碎片。 1.2 解决方法 第二级配置器对内存的申请办法: 1、如果申请的内存块够大,超过超过128bytes,则移交给第一级配置器。 ...原创 2019-08-26 23:48:39 · 370 阅读 · 0 评论