靜態空間管理和動態空間管理

2021-09-11 19:58:40 字數 759 閱讀 2577

內部陣列所佔的物理空間的容量,若在向量的生命期內不允許調整,則稱作靜態空間管理策略。

向量的實際規模與其內部的陣列容量的比值(_size/_capacity),亦稱作裝填因子(他是衡量空間利用率的重要指標)

所以如何才能保證向量的裝填因子既不至於超過1,也不至於太接近0,這時候需要動態空間管理了。

templatevoid vector: : expend()}^" class="mathcode" src=""/>次

所有t(n)=2n+4n+8n+......+capacity(n)<2*capacity(n)=

將其分攤到其間的連續n次操作,單次操作所需的分攤執行時間應為

另乙個導致低效率的情況是,向量的實際規模可能遠遠小於內部陣列的容量。比如在連續的一系列操作過程中,若刪除操作遠多於插入操作,則裝填因子可能遠遠小於100%,甚至非常接近與0.當裝填因子低於某一閾值時,我們稱陣列發生了下溢。

這時候就要用縮容

templatevoid  vector::shrink(){

if(_capacityif(_size<<2>_capacity) return ;//以25%為界

t*_oldelem=_elem  ;

_elem=new t[_capacity>>=1];//容量減半

for(int i=0;i<_size _elem>

delete oldelem;

本地管理表空間和字典管理表空間

oracle的儲存分為四個層次,block extent segment和tablespace。oracle分配空間到segment時,是將一組連續的block新增到segment,這組連續的block稱作乙個extent。對於已經分配和還未分配的extent的元資料可能存放在資料字典中 字典管理表...

表空間管理

第一步 檢視表空間的名字及檔案所在位置 select tablespace name,file id,file name,round bytes 1024 1024 0 total space from dba data files order by tablespace name 第二步 增大所需...

linux記憶體管理 使用者空間和核心空間

關於虛擬記憶體有三點需要注意 上圖展示了整個程序位址空間的分布,其中4g的位址空間分為兩部分,在使用者空間內,對應了記憶體分布的五個段 資料段 段 bss段 堆 棧。在上篇文章中有詳細的介紹。這個圖示核心使用者空間的劃分,圖中最重要的就是高階記憶體的對映 其中kmalloc和vmalloc函式申請的...