stl_alloc.h分配器
生活随笔
收集整理的這篇文章主要介紹了
stl_alloc.h分配器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
五、分配器:
5.1、頭文件:
5.1.1、include<stl_alloc.h> //內存的分配。
5.1.2、include<stl_construct.h> //對象的構造和析構。
5.1.3、include<uninitialized.h> //對空間中的內存進行操作、 操作效率高。
5.2、分配,釋放:
5.2.1、static void* allocate(size_t __n) //申請獲得所需的這段空間,然后返回。 {void* __result = malloc(__n);if (0 == __result) __result = _S_oom_malloc(__n); //如果分配失敗就循環(huán)的進行搜索return __result;}5.2.2、 static void deallocate(void* __p, size_t /* __n */) //在標準的接口中做的都是適合大眾的東西, 后期需要 simple_alloc 這樣的一個類來進行包裝, { //使其變成一個統(tǒng)一的接口, free(__p);} 5.2.3、 static void* reallocate(void* __p, size_t /* old_sz */, size_t __new_sz){void* __result = realloc(__p, __new_sz);if (0 == __result) __result = _S_oom_realloc(__p, __new_sz);//如果分配失敗就循環(huán)的進行搜索return __result;}5.4、兩級分配:
5.4.1、一級分配器:__malloc_alloc_template
5.4.2、二級分配器:__default_alloc_template
5.5、統(tǒng)一接口:
simple_alloc template<class _Tp, class _Alloc>class simple_alloc //提供了一個統(tǒng)一的接口,調用起來更加的方便。 { //在這個統(tǒng)一的接口中我們能申請我們需要的類型的內存空間大小。 public:static _Tp* allocate(size_t __n){ return 0 == __n ? 0 : (_Tp*) _Alloc::allocate(__n * sizeof (_Tp));}static _Tp* allocate(void){return (_Tp*) _Alloc::allocate(sizeof (_Tp));}static void deallocate(_Tp* __p, size_t __n){ if (0 != __n) _Alloc::deallocate(__p, __n * sizeof (_Tp)); }static void deallocate(_Tp* __p){_Alloc::deallocate(__p, sizeof (_Tp));} };?
轉載于:https://www.cnblogs.com/xiaohaige/p/6786533.html
總結
以上是生活随笔為你收集整理的stl_alloc.h分配器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA Spring 简单的配置和操作
- 下一篇: 《3》CentOS7.0+OpenSta