经过长时间的学习终于可以开始tinystl的仿(chao)写工作了,本文参考了这位大佬得github,坦白讲我只是补充了注释,因为tinystl的代码真的非常经典而我又没什么这种大型项目的经验,所以只能这样做,不过相信能够有助于大家的学习
#强烈建议按顺序阅读本专栏
#include"../Alloc.h"
namespace mySTL {
char *alloc::start_free = 0;
char *alloc::end_free = 0;
size_t alloc::heap_size = 0;
//做初始化
alloc::obj *alloc::free_list[alloc::ENFreeLists::NFREELISTS] = {
0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
void *alloc::allocate(size_t bytes) {
if (bytes > EMaxBytes::MAXBYTES) {
return malloc(bytes);//比最大块要大直接调用malloc
}
size_t index = FREELIST_INDEX(bytes);//选择区块
obj *list = free_list[index];//选定区块
if (list) {
free_list[index]