前面我们使用了uninitialized_fill,来批量初始化某一段内存。 下面提供三个函数的实现代码,这三个代码的共同点是: 1.遇到错误,抛出异常 2.出现异常时,把之前构造的对象全部销毁 所以,这三个函数要么成功,要么无任何副作用。使用异常来通知使用者,所以在catch块中,处理完异常后要将...
分类:
其他好文 时间:
2014-10-03 02:33:33
阅读次数:
324
自己实现Allocator并不难,其实只需要改变allocate和deallocate,来实现自己的内存分配策略。 下面是一个std::allocator的模拟实现 #ifndef ALLOCATOR_HPP
#define ALLOCATOR_HPP #include #include templ...
分类:
其他好文 时间:
2014-10-02 20:34:33
阅读次数:
264
上一篇我们提到了new运算符以及它的工作步骤,其实无非是把两项工作独立出来: 1.申请原始内存 2.执行构造函数 delete也涉及了两个工作: 1.执行析构函数 2.释放原始内存 其实标准库提供了另外一种更加高级的手段实现内存的分配和构造,就是std::allocator的职责。 allocato...
分类:
其他好文 时间:
2014-10-02 18:50:23
阅读次数:
195
注意几点:
分配内存不要使用new和delete,因为new的同时就把对象构造了,而我们需要的是原始内存。
所以应该使用标准库提供的allocator类来实现内存的控制。当然也可以重载operator new操作符,因为二者都是使用malloc作为底层实现,所以直接采用malloc也可以。
对象的复制必须使用系统提供的uninitialized_fill和uninitialized_...
分类:
编程语言 时间:
2014-10-02 18:37:43
阅读次数:
231
注意几点: 分配内存不要使用new和delete,因为new的同时就把对象构造了,而我们需要的是原始内存。 所以应该使用标准库提供的allocator类来实现内存的控制。当然也可以重载operator new操作符,因为二者都是使用malloc作为底层实现,所以直接采用malloc也可以。 对象的复...
分类:
其他好文 时间:
2014-09-29 00:11:26
阅读次数:
303
首先,关于allocator戳旁边→维基百科-分配器(C++)这次我只用了其中的一部分API,来实现一个简易的vector容器,这个简易版vector实现了插入、删除、查找等简易功能,由于对右值的理解不足,所以这次并未实现关于右值的API。【MSDN-class allocator_base API...
分类:
其他好文 时间:
2014-09-24 00:27:55
阅读次数:
284
1、百度找到的解决办法。写在这里方便下次使用。 export LD_LIBRARY_PATH export LC_CTYPE="zh_CN.UTF-8" ? ? #这是解决google浏览器乱码问题 export CHROME_VERSION_EXTRA="stable" # We don‘t want bug-buddy...
分类:
系统相关 时间:
2014-09-07 02:15:04
阅读次数:
391
第二章:空间配置器 allocator SGI特殊的空间配置器,std::alloc SGI是以malloc()和free()完成内存的配置与释放。 SGI设计了双层级配置器: 第一级配置器直接使用malloc()和free(); _malloc_alloc_template ...
分类:
其他好文 时间:
2014-09-02 22:40:25
阅读次数:
237
一、容器vector
使用vector必须包含头文件:
#include
型别vector是一个定义于namespace std内的template:
[cpp]
view plaincopyprint?
templateclass _Ty, class _Ax = allocator >
第二个参数定义内存模型。我们一般采用默认的内存模型。
...
分类:
其他好文 时间:
2014-08-31 10:32:21
阅读次数:
239
一、SGI STL配置器简介
SGI STL的配置器与众不同,它与标准规范不同。如果要在程序中明确使用SGI配置器,那么应该这样写:
[cpp]
view plaincopyprint?
vectorint,std::alloc> iv;
他的名字是alloc,而且不接受任何参数。标准配置器的名字是allocator,而且可以接受参数。
SGI S...
分类:
其他好文 时间:
2014-08-26 11:49:26
阅读次数:
243