template <typename T>class Alloctor{
private:
typedef T* address;
T *memory,*t;
size_t total_size;
size_t alignment;
size_t blockSize;
inline void * addressOfBlock(int i){
return (char*)memory + (i)*blockSize;
}
public:
Alloctor(size_t size = 120,size_t align = 4) :memory(NULL),total_size(size),alignment(align){
assert(sizeof(T) >= 4);
size_t pad = (align - (sizeof(T)&(align-1)));

if (pad == align)

pad = 0;

blockSize = pad + sizeof(T);
t = (address)malloc(total_size*(sizeof(T)+pad)+align);
memory = t + (align - (int)t&(align - 1));
void * buf;
for (size_t i = 0; i < total_size - 1; i++){
buf = addressOfBlock(i+1);
memcpy(addressOfBlock(i), &buf, sizeof(void*));
}
buf = NULL;
memcpy(addressOfBlock(total_size-1), &buf, sizeof(void*));
}
address alloc(){
address res;
memcpy(&res, memory, sizeof(void*));
if (res)
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(t);
}
};

简单的ALloctor模板的更多相关文章

  1. 使用alloctor模板来实现string类

    虽然以前做过更复杂的各种数据结构,不过那只是在看完c++prime7章后做的,没有考虑到类的拷贝体现出来是类值还是类指针,于是写了一些半成品类,不过那些主要是练数据结构,不想再改,于是就想办法模仿了下 ...

  2. Csharp 简单操作Word模板文件

    原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档  Doc1.dot 内容为: To: <Name> Sub:<Subject> Website i ...

  3. OpenCms JSP 模板开发——创建一个简单的JSP模板

    OpenCms中的JSP模板就是一个普通的JSP页面,在特定的位置使用标签来包含内容,在这个的例子中,我们将要开发一个简单JSP模板,这个模板只是在内容(如<html>.<body& ...

  4. 一个简单地template模板

    之前的项目中用到了artTemplate模板,感觉挺有意思,于是查看相关资料,自己动手写了个简单地template模板插件.虽然会有一些不足,但也是自己的一番心血.主体代码如下 /* * 一个简单地t ...

  5. Zend Studio 中创建简单的phpfile模板和xhtml类phpfile模板

    <!--简单的phpfile模板,带有创建时间和作者--><?php/*** ==============================================* @dat ...

  6. 一种简单快速的模板解析方法,活用with javascript版

    //一种简单快速的模板解析方法,活用with var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj|| ...

  7. 洛谷 P4148 简单题 KD-Tree 模板题

    Code: //洛谷 P4148 简单题 KD-Tree 模板题 #include <cstdio> #include <algorithm> #include <cst ...

  8. Html+css 一个简单的网页模板

    一个简单的网页模板,有导航.子菜单.banner部分 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&q ...

  9. 最简单的JavaScript模板引擎

    在小公司待久了感觉自己的知识面很小,最近逛博客园和一些技术网站看大家在说JavaScript模版引擎的事儿,完全没有概念,网上一搜这是08年开始流行起来的...本来以为这是很高深的知识,后来在网上看到 ...

随机推荐

  1. atexit()函数

    atexit()函数  头文件:#include<stdlib.h> 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: int atexit(void (*func)(v ...

  2. 【web安全】第四弹:防火墙技术笔记

    参考资料: <黑客攻防演习>第二版   Ed SKoudis  Tom Liston著 <防火墙.入侵检测与VPN> 马春光 郭方方著 OSI在理论上将网络分为七层,物理层.数 ...

  3. Oracle XE修改默认HTTP端口8080

    打开SQL*Plus控制台.用sys或者system登陆.然后运行: begin dbms_xdb.sethttpport('9999'); end; / 搞定.

  4. 【原创】Matlab中plot函数全功能解析

    [原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...

  5. backbone csdn

    http://blog.csdn.net/the_fire/article/details/7444067 blog.csdn.net/the_fire/article/details/7445448 ...

  6. 禁止form表单回车键进行提交

    使用EasyUI的时候,我们会给一个datagrid添加一个搜索栏,但是这个搜索栏的form,我们一般使用ajax向服务器提交数据,因此在这样一个环境下可以考虑禁止用户按回车键(Enter)提交.代码 ...

  7. Java+JQuery实现网页显示本地文件目录(含源码)

    原文地址:http://www.cnblogs.com/liaoyu/p/uudisk.html 源码地址:https://github.com/liaoyu/uudisk 前段时间为是练习JQuer ...

  8. Android Training精要(四) Intent注意事项

    判断有处理Intent的Activity PackageManager packageManager = getPackageManager(); List<ResolveInfo> ac ...

  9. eclipse导入已有源码

    http://blog.csdn.net/scruffybear/article/details/1917301 如有转载,请注明出处,并保持文章的完整性,谢谢! 最近工作之余在研究国外经典书籍< ...

  10. 【CF】135 Div2 Choosing Capital for Treeland

    树形结构,挺有意思的题目.不难. /* 219D */ #include <iostream> #include <string> #include <map> # ...