String系列 空間配置器

2021-07-04 05:50:27 字數 576 閱讀 7127

前言:原文本來是想為string實現乙個空間配置器的,當我著手寫的時候發現,這是乙個幼稚的想法,空間配置器在於自己來配置空間,原本的意思也只是學習一下空間配置器的原理,理解了空間配置器的作用就行了。所以,下面我主要講述空間配置器的原始碼:

template

inline t* allocate(ptrdiff_t size, t*)

return tmp;

}template

inline

void deallocate(t* buffer)

template

class allocator

void deallocate(pointer p)

pointer address(reference x)

const_pointer const_address(const_reference x)

size_type init_page_size()

size_type max_size() const

};class allocator ;

空間配置器

普通存放資料的原理 需要空間 new new 申請空間 構造物件 new是將malloc重新封裝的,使用一次malloc,在記憶體中除了會開闢所需空間外,還會額外開闢36個位元組 通過這種形式管理空間可以防止越界訪問 普通方式存放資料是存在缺陷的 1.頻繁的向系統索要小的記憶體塊,會產生記憶體碎片。...

STL 空間配置器

stl有6大元件 容器 演算法 迭代器 仿函式 配接器 分配器。它們之間的密切關係是stl的精髓所在,容器用來存放資料,而容器存在的前提是要有分配器給它分配記憶體,接下來需要實現演算法,迭代器便作為演算法來對容器資料操作的橋梁,演算法可以使用仿函式完成不同的策略變化,配接器可修飾或套接仿函式。說了麼...

STL 空間配置器

stl空間配置器的底層原理 維護了乙個狹義的記憶體池,並且用乙個自由鍊錶來維護該記憶體池。該自由鍊錶比較類似於雜湊的開鏈法的儲存結構。源 pragma once using namespace std define throw bad alloc cerr out of memory endl ex...