简单的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);
    }
};
时间: 2024-10-23 20:55:24

简单的ALloctor模板的相关文章

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

//一种简单快速的模板解析方法,活用with var parseTpl = function( str, data ) { var tmpl = 'var __p=[];' + 'with(obj||{}){__p.push(\'' + str.replace( /\\/g, '\\\\' ) .replace( /'/g, '\\\'' ) .replace( /<%=([\s\S]+?)%>/g, function( match, code ) { return '\',' + code.

一个超级简单的HTML模板框架源代码以及使用示例

HTML模板框架源代码 var HtmlTemplate = (function () { function HtmlTemplate(htmlSource) { this.htmlSource = htmlSource; } HtmlTemplate.prototype.toHTML = function (params) { var reg = HtmlTemplate.REG_FILTER_PARAM; var m = this.htmlSource.replace(reg, functi

一个简单的makefile模板

在Linux下编译工程,makefile是必不可少的工具,下面记录一个简单的makefile模板. 多个文件目录下的makefile写法推荐参考博文:http://www.cnblogs.com/Anker/p/3242207.html DIR_SRC = ./ DIR_BIN = ../bin PROGRAMNAME = program TARGET = ${DIR_BIN}/${PROGRAMNAME} SRC = $(wildcard ${DIR_SRC}/*.cpp) CC = g++

Csharp 简单操作Word模板文件

原文:Csharp 简单操作Word模板文件 1.创建一个模板的Word文档  Doc1.dot 内容为: To: <Name> Sub:<Subject> Website is ok geovindu 涂聚文好样的 work. CEo <Datetime> Thanks. 2.程序操作代码为: /// <summary> /// 簡單操作Word模板文件 /// 塗聚文 2011-11-03 /// 缔友计算机信息技术有限公司 /// </summa

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

<!--简单的phpfile模板,带有创建时间和作者--><?php/*** ==============================================* @date: ${date}* @author: ${user}* @version: 1.0* ==============================================*/ ${cursor}?> <!--xhtml类phpfile模板,同样具有创作时间和作者--><?p

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

一个简单的网页模板,有导航.子菜单.banner部分 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 2 "http://www.w3.org/TR/html4/loose.dtd"> 3 <html> 4 <head> 5 <title>网页</title> 6 <meta charset="UTF-8&qu

编写一个简单的js模板替换工具 rtt----replace templete tool

最近一段时间在修改自己的个人在线简历.  这个在线简历用到了css3来制作3D的旋转效果, 因此会有兼容性问题, 针对于不支持css3的3D透视的浏览器, 比如 IE,  360等等, 我使用的是另一套css文件兼容.  针对于移动端浏览器, 尽管基本都是webkit内核, 但经测试发现3D效果并不流畅, 因此移动端是识别userAgent切换到另一套非3D页面.  因为没用任何数据库, 那么问题就来了, 移动端和pc端两套页面是共用的一套数据, 我想到的方法有两个: 一是页面加载之后用ajax

18.2.2 简单的类模板

下面用前面的一个例子来说明,为数组定义一个类模板,该数组要对索引值进行边界检查,确保索引值是合法的.尽管标准库提供了数组模板的完整实现方式,但建立自己的数组模板有助于理解模板的工作原理.我们已经很清楚数组的工作原理了,因此下面集中讨论模板的特性.这也更容易使用第20章介绍的标准库中的 Array 模板. 数组模板只有一个类型参数,所以该模板的定义如下: template <typename T> class Array{ //definition of the template.. } Arr

一个简单的Java模板工具类(二)—简单表达式解析实现

以前写过一个, 用正则比较不高效, 所以用表达式解析方式又实现了一个, 练手. 以前的: http://my.oschina.net/haogrgr/blog/222349 现在的: import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; /**  * 非常非常简单的模板实现  *   * @author desheng.tu  * @date 2015年