摘要: 在第一级配置器中,一开始就定义了内存分配出错的宏接口,如下: 先弄清楚第一级配置器如何工作,注意没有template型别参数,因为我们只是分配空间,并不进行对象的构造,至于非型别参数 "__inst" ,就没怎么派上用场,如下: 第一级配置器以 malloc()、free()、realloc()等 阅读全文
posted @ 2017-05-04 17:45 Forever-Road 阅读(1066) 评论(1) 推荐(0) 编辑
摘要: 在STL源代码中,对象构造前的空间配置和对象析构后的空间释放,由<stl_alloc.h>负责,SGI STL的空间配置器考虑到了多线程状态以及线程资源分配和线程切换、内存不足、内存堆区空间的申请、过多“小型区块”可能造成内存碎片(fragment)等一系列问题。 C++负责内存配置基本操作的是 : 阅读全文
posted @ 2017-05-04 16:19 Forever-Road 阅读(1490) 评论(0) 推荐(0) 编辑
摘要: 文件夹内部内容,从cmd看: 程序运行结果: 阅读全文
posted @ 2017-05-03 11:35 Forever-Road 阅读(5655) 评论(0) 推荐(0) 编辑
摘要: 运行结果:点击选择图片按钮,选择图片后,图片在Picture Control上展示 阅读全文
posted @ 2017-05-03 11:07 Forever-Road 阅读(15495) 评论(1) 推荐(0) 编辑
摘要: 以下是这两个函数的整体示意图: construct()和destroy()函数必须被设计为全局函数,STL规定空间配置器必须包含这两个成员函数,但是std::alloc的配置器并没有遵循这一规则。 以下是包含在<stl_construct.h>头文件中的两个函数的的定义: 上述 _Construct 阅读全文
posted @ 2017-05-03 10:29 Forever-Road 阅读(1570) 评论(1) 推荐(0) 编辑
摘要: SGI STL 的配置器与标准规范不同,SGI STL默认空间配置器为std::alloc, SGI STL allocator并不完全符合标准规格,但是这并不影响我们引用其代码,因为我们通常使用的是缺省的空间配置器,很少需要自己指定配置器。 SGI STL allocator只是对::operat 阅读全文
posted @ 2017-05-03 08:44 Forever-Road 阅读(194) 评论(0) 推荐(1) 编辑
摘要: 将以上空间配置器 m_allocator::_m_alloctor应用于程序中,只能有限度搭配PJ STL 和RW STL(两种不同版本STL源码),因为PJ STL未完全遵循STL规格,其所供应的许多容器都需要一个非标准的空间配置器接口allocator::_Charalloc(), 而RW ST 阅读全文
posted @ 2017-05-02 17:20 Forever-Road 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并被自动刷新,也称为发布-订阅模式(Publish-Subscribe Pattern)。 优点:1、观察者和被观察者是抽象耦合 2、建立一套触发机制 缺点:1、一个被观察者,多个观察者,开发和调试都变得相 阅读全文
posted @ 2017-03-22 17:38 Forever-Road 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 定义:定义一组算法,将每个算法封装起来,并且使他们之间可以互换。 策略模式使用的就是面向对象的继承和多态机制。 优点:1、算法可以自由切换 2、避免使用多重条件判断 3、扩展性良好 缺点:1、策略类数量增多 2、所有策略类都需要向外暴露 阅读全文
posted @ 2017-03-21 17:03 Forever-Road 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 优点:1、封装不变部分(在父类实现),扩展可变部分(在子类实现) 2、提取公共部分代码,便于维护 3、行为由父类控制,子类实现 缺点:按照我们的设计习惯,抽象类负责声明最抽象 阅读全文
posted @ 2017-03-21 15:47 Forever-Road 阅读(145) 评论(0) 推荐(0) 编辑