最近在追旧番《STL代码剖析》。真的是很旧很旧的番了,STL在94年开始走入STL,这本书则是2002年出版的,C++03和C++11还不知何在的年代。看完第二章之后合上书,想自己写一个allocator。发现看书过程中自认为“所言极是”的地方,居然根本写不出来。虽然从前也写过内存池 (memp.....
分类:
其他好文 时间:
2014-11-14 17:07:04
阅读次数:
177
在C++标准中,STL被组织为下面的13个头文件:、、、、、、、、、、、、、、、和。 STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。 容器 容器部...
分类:
其他好文 时间:
2014-11-09 23:39:28
阅读次数:
324
在C++中字符串类的string的模板原型是basic_stringtemplate,class_Ax=allocator>classbasic_string{}; 第一个参数_Elem表示类型。第二个参数traits的缺省值使用char_traits类型,定义了类型和字符操作的函数,如比较、等价....
分类:
编程语言 时间:
2014-11-04 16:57:22
阅读次数:
252
在.net+oracle开发中,发布web程序的时候,有是会遇到该错误 ora-01019ORA-01019 unable to allocate memory in the user sideCause: The user side memory allocator returned an err...
分类:
数据库 时间:
2014-11-02 23:46:28
阅读次数:
484
STL源码之实现一个简易的Vector容器
这里需要的基础知识主要是类模板和函数模板,以及一个C++内存分配的技术allocator类,它提供可感知类型的内存分配,这个类支持一个抽象接口,以分配内存并随后使用该内存保存对象。
使用allocator类,首先应用allocator类建立一个allocator对象,然后使用该对象你可以分配内存,释放内存,构造你...
分类:
其他好文 时间:
2014-10-22 18:16:27
阅读次数:
171
Back in December 2011, LWN reviewed the list of Android kernel patches in the linux-next staging directory. The merging of these drivers, one of which is a memory allocator called PMEM, holds the p...
分类:
移动开发 时间:
2014-10-21 17:59:08
阅读次数:
379
下面提供三个函数的实现代码,这三个代码的共同点是:1.遇到错误,抛出异常2.出现异常时,把之前构造的对象全部销毁所以,这三个函数要么成功,要么无任何副作用。使用异常来通知使用者,所以在catch块中,处理完异常后要将异常再次向外抛出。代码如下: 1 #ifndef UNINIT_H 2 #defin...
分类:
其他好文 时间:
2014-10-05 20:07:38
阅读次数:
183
功能尚不完全, 存在缺陷。定义Vector vec(10, 10)会报出异常, 原因是无法识别10是int型还是iterator型。注意几点:分配内存不要使用new和delete,因为new的同时就把对象构造了,而我们需要的是原始内存。所以应该使用标准库提供的allocator类来实现内存的控制。当...
分类:
其他好文 时间:
2014-10-05 20:04:49
阅读次数:
194
我们只需改动allocate和deallocate,来实现自己的内存分配策略即可。代码如下: 1 #ifndef ALLOCATOR_H 2 #define ALLOCATOR_H 3 4 #include 5 #include 6 7 template 8 class Allocato...
分类:
其他好文 时间:
2014-10-05 19:47:38
阅读次数:
236
前面我们使用了uninitialized_fill,来批量初始化某一段内存。 下面提供三个函数的实现代码,这三个代码的共同点是: 1.遇到错误,抛出异常 2.出现异常时,把之前构造的对象全部销毁 所以,这三个函数要么成功,要么无任何副作用。使用异常来通知使用者,所以在catch块中,处理完异常后要将...
分类:
其他好文 时间:
2014-10-03 02:33:33
阅读次数:
324