首页 > 代码库 > 简单的ALloctor模板
简单的ALloctor模板
RT,只能分配固定大小内存的分配器,优点是分配回收只要O(1)
template <typename T>class Alloctor{ private: typedef T* address; T *memory; size_t total_size; public: Alloctor(size_t size = 120) :memory(NULL),total_size(size){ assert(sizeof(T) >= 4); memory = (address)malloc(total_size*sizeof(T)); void * buf; for (size_t i = 0; i < total_size - 1; i++){ buf = (void*)(memory + i + 1); memcpy(memory + i, &buf,sizeof(void*)); } buf = NULL; memcpy(memory+total_size-1,&buf,sizeof(void*)); } address alloc(){ address res; memcpy(&res, memory, sizeof(void*)); memcpy(memory, res, sizeof(void*)); return res; } void free(address a){ memcpy(a, memory, sizeof(void*)); void * buf = a; memcpy(memory,&buf,sizeof(void*)); } ~Alloctor(){ free(memory); } };
简单的ALloctor模板
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。