下面是沒有加上多執行緒安全的default_alloc_template模板類以及實現**:(⊙o⊙)… 本人比較懶,自己寫的注釋都寫在書上了,覺得自己敲出來理解的更加透徹些。
template class __default_alloc_template;
enum ;
enum ;
union obj ;
static obj* volatile free_list[_nfreelists];
static size_t freelist_index(size_t bytes)
static size_t round_up(size_t n)
static void *refill(size_t n);
static char *chunk_alloc(size_t size , int &nobjs);
static char *start_free;
static char *end_free;
static size_t heap_size;
public:
static void *allocate(size_t n);
static void deallocate(void *p , size_t n);
static void *reallocate(void *p , size_t old_sz , size_t new_sz);
};template char * __default_alloc_template::start_free = 0;
template char * __default_alloc_template::end_free = 0;
template char * __default_alloc_template::heap_size = 0;
template char * __default_alloc_template:: free_list = ;
template static void * __default_alloc_template:: allocate(size_t n)
obj *volatile *my_free_list;
obj * result;
my_free_list = free_list + freelist_index(n);
result = *my_free_list;
if (result == 0)
*my_free_list = result -> free_list_link;
return result;
}template void __default_alloc_template:: deallocate(void *p , size_t n)
obj *q = (obj *)p;
obj *volatile *my_free_list = free_list + freelist_index(n);
q->free_list_link = *my_free_list;
*my_free_list->free_list_link = q;
}template void *__default_alloc_template::refill(size_t n)
else }}
template char *__default_alloc_template::chunk_alloc(size_t size , int &nobjs)
else if ( bytes_left >= size )
else
start_free = (char *) malloc(bytes_to_get);
if (start_free == 0)
}end_free = 0;
start_free = (char *) malloc_alloc::allocate(bytes_to_get);
} heap_size += bytes_to_get;
end_free = start_free + bytes_to_get;
return chunk_alloc(size , nobjs);
}}
STL學習筆記
1.stl六大元件 1 容器 各種資料結構,如vector,list,deque,set,map,用來存放資料,從實現的角度看,stl容器是一種class template。2 演算法 各種常用的演算法如sort,search,copy,erase.從實現的角度看,stl演算法是一種function...
STL學習筆記
容器是用來存放資料的,掌握容器特性才能更好地選擇合適的容器載資料。這裡要記住,可自主選擇插入的位置 vectors 可隨機訪問,可變長陣列,可快速在尾部插入刪除,不適合在中部頭部頻繁插入刪除 deques 可隨機訪問,佇列,先進先出,可快速在頭部尾部插入刪除,同樣不適合在中部插入刪除元素 list ...
STL學習筆記 01
1.容器 containers 各種資料結構 2.演算法 algorithms 各種常用演算法 3.迭代器 iterators 容器和演算法之間的膠合劑 4.仿函式 functors 行為類似函式,可作為演算法的某種策略 5.配接器 adapters 一種用來修飾容器或仿函式或迭代器介面的東西 6....