青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

自己實現的一個ACE內存分配器

針對我的前兩篇文章《基于ACE實現的一個內存池》和《基于ACE實現的一個內存池-續篇》后,發現緩存ACE_Message_Block的時候還是不太方便,然后干脆實現了ACE_Allocator接口,代碼如下,利用這個分配器的ACE_Message_Block將會很快貼出來。

//MemPoolAllocator.h
/**
 *    @date 2007.10.29
 *  @author PeakGao <peakgao163@163.com>
 
*/

#ifndef OM_MEMPOOLALLOCATOR_H
#define OM_MEMPOOLALLOCATOR_H

#include 
<ace/pre.h>

//#include <ace/ACE_export.h>

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include 
<ace/Malloc_Base.h>

#if defined (ACE_HAS_MALLOC_STATS)
#if defined (ACE_HAS_THREADS)
#include 
"ace/Process_Mutex.h"
#define ACE_PROCESS_MUTEX ACE_Process_Mutex
#else
#include 
"ace/SV_Semaphore_Simple.h"
#define ACE_PROCESS_MUTEX ACE_SV_Semaphore_Simple
#endif /* ACE_HAS_THREADS */

#endif /* ACE_HAS_MALLOC_STATS */

#include 
"MemPoolT.h"


namespace om{

class My_Allocator : public ACE_Allocator, public CachePool
{
public:
  
/// These methods are defined.
  virtual void *malloc (size_t nbytes);
  
virtual void *calloc (size_t nbytes, char initial_value = '\0');
  
virtual void *calloc (size_t n_elem, size_t elem_size, char initial_value = '\0');
  
virtual void free (void *ptr);

  
/// These methods are no-ops.
  virtual int remove (void);
  
virtual int bind (const char *name, void *pointer, int duplicates = 0);
  
virtual int trybind (const char *name, void *&pointer);
  
virtual int find (const char *name, void *&pointer);
  
virtual int find (const char *name);
  
virtual int unbind (const char *name);
  
virtual int unbind (const char *name, void *&pointer);
  
virtual int sync (ssize_t len = -1int flags = MS_SYNC);
  
virtual int sync (void *addr, size_t len, int flags = MS_SYNC);
  
virtual int protect (ssize_t len = -1int prot = PROT_RDWR);
  
virtual int protect (void *addr, size_t len, int prot = PROT_RDWR);
#if defined (ACE_HAS_MALLOC_STATS)
  
virtual void print_stats (voidconst;
#endif /* ACE_HAS_MALLOC_STATS */
  
virtual void dump (voidconst;

private:
  
// DO NOT ADD ANY STATE (DATA MEMBERS) TO THIS CLASS!!!!  See the
  
// <ACE_Allocator::instance> implementation for explanation.
}
;


#include 
/**/ <ace/post.h>

}
 // namespace om

#endif // OM_MEMPOOLALLOCATOR_H


// MemPoolAllocator.cpp
/**
 *    @date 2007.10.29
 *  @author PeakGao <peakgao163@163.com>
 
*/

 
#include 
"MemPoolAllocator.h"
#include 
<ace/OS_NS_string.h>

namespace om{

    
void *
    My_Allocator::malloc (size_t nbytes)
    
{
        
if (nbytes > 0 && nbytes <= CachePool::getBlockSize())
          
return CachePool::alloc();

      
return NULL;
    }


    
void *
    My_Allocator::calloc (size_t nbytes,
                               
char initial_value)
    
{
      
void *ptr = malloc(nbytes);
      
if (!ptr)
          
return NULL;

      ACE_OS::memset (ptr, initial_value, nbytes);
      
return (void *) ptr;
    }


    
void *
    My_Allocator::calloc (size_t n_elem, size_t elem_size, 
char initial_value)
    
{
      
return My_Allocator::calloc (n_elem * elem_size, initial_value);
    }


    
void
    My_Allocator::free (
void *ptr)
    
{
        CachePool::free(ptr);
    }


    
int
    My_Allocator::remove (
void)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::bind (
const char *void *int)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::trybind (
const char *void *&)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::find (
const char *void *&)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::find (
const char *)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::unbind (
const char *)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::unbind (
const char *void *&)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::sync (ssize_t, 
int)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::sync (
void *, size_t, int)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::protect (ssize_t, 
int)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
int
    My_Allocator::protect (
void *, size_t, int)
    
{
      ACE_NOTSUP_RETURN (
-1);
    }


    
#if defined (ACE_HAS_MALLOC_STATS)
    
void
    My_Allocator::print_stats (
voidconst
    
{
    }

    
#endif /* ACE_HAS_MALLOC_STATS */

    
void
    My_Allocator::dump (
voidconst
    
{
    
#if defined (ACE_HAS_DUMP)
    
#endif /* ACE_HAS_DUMP */
    }



}
 // namespace om

posted on 2007-10-29 12:48 PeakGao 閱讀(1995) 評論(1)  編輯 收藏 引用 所屬分類: C++技術

評論

# re: 自己實現的一個ACE內存分配器 2008-03-14 23:27 happychui

1 class My_Allocator 繼承CachePool時必須要模版實例化才行,所以必須加上<ACE_SYNCH_MUTEX>
2 因為ACE_SYNCH_MUTEX需要頭文件 Task.h所以加上了。
  回復  更多評論   

<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿(9)

隨筆分類(67)

隨筆檔案(65)

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产一区在线观看| 韩日精品中文字幕| 99国产精品国产精品久久| 久久高清免费观看| 亚洲黄色av| 亚洲国产精品t66y| 亚洲国产综合在线| 国产伦理一区| 国产精品国产a| 国产精品麻豆成人av电影艾秋 | 精品91在线| 亚洲国内高清视频| 欧美亚洲视频一区二区| 久久精品道一区二区三区| 老司机一区二区| 99在线热播精品免费99热| 亚洲图中文字幕| 六十路精品视频| 国产精品国产三级欧美二区| 精品1区2区3区4区| 亚洲一区二区三区四区中文| 久热re这里精品视频在线6| 亚洲第一精品夜夜躁人人爽| 亚洲黄色三级| 亚洲欧美激情一区| 久久躁日日躁aaaaxxxx| 欧美成人午夜激情在线| 亚洲一区图片| 免费人成精品欧美精品| 欧美日韩在线播放三区四区| 欧美黄网免费在线观看| 国产精品久久久久久久午夜片| 国产欧美日韩三区| 国产精品久久久久7777婷婷| 国外成人在线视频| 亚洲免费在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲午夜成aⅴ人片| 久久综合色婷婷| 亚洲欧美国产高清| 欧美激情1区2区3区| 欧美日韩伦理在线| 亚洲精品网站在线播放gif| 久久九九99| 久久av一区二区三区| 欧美在线播放一区| 亚洲一区二区免费视频| 欧美三级视频在线| 亚洲欧洲日本国产| 亚洲大胆视频| 欧美激情视频网站| 国产精品99久久不卡二区| 欧美成人午夜激情在线| 欧美精品啪啪| 日韩视频精品| 亚洲一级二级| 国产亚洲激情| 老牛嫩草一区二区三区日本 | 国产欧美一区二区精品婷婷| 激情综合色综合久久综合| 久久视频在线视频| 欧美日韩成人| 欧美亚州韩日在线看免费版国语版| 亚洲精品国产精品乱码不99按摩| 免费久久99精品国产自| 欧美精品成人| 久久久水蜜桃av免费网站| 欧美二区在线看| 久久国产精品免费一区| 欧美国产第二页| 久久国产黑丝| 欧美第一黄网免费网站| 欧美亚洲综合久久| 午夜精彩国产免费不卡不顿大片| 午夜精品影院| 在线观看欧美日韩国产| 亚洲伦理精品| 亚洲国产你懂的| 亚洲一区视频在线| 欧美福利电影网| 久久蜜臀精品av| 欧美大片网址| 性娇小13――14欧美| 狠狠色狠狠色综合日日小说| 亚洲日本电影在线| 亚洲国产精品久久久久婷婷884 | 亚洲区中文字幕| 伊人久久久大香线蕉综合直播| 国产精品久久福利| 欧美顶级艳妇交换群宴| 久久精品夜夜夜夜久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美精品v国产精品v日韩精品| 另类亚洲自拍| 免费亚洲电影在线观看| 亚洲国产精品一区二区www在线| 亚洲日本va在线观看| 老司机午夜精品视频在线观看| 欧美三日本三级少妇三2023| 亚洲欧洲一二三| 午夜精品www| 亚洲区一区二区三区| 国产精品美女www爽爽爽| 久久国产日本精品| 999在线观看精品免费不卡网站| 久久九九热免费视频| 欧美一区三区三区高中清蜜桃| 国产一区二区三区精品久久久 | 亚洲色图在线视频| 久久深夜福利免费观看| 欧美11—12娇小xxxx| 午夜精品亚洲| 欧美wwwwww| 小嫩嫩精品导航| 欧美激情麻豆| 香港久久久电影| 亚洲精品永久免费精品| 欧美高清在线播放| 久久国产加勒比精品无码| 亚洲少妇自拍| 日韩一级精品| 在线午夜精品自拍| 国产精品丝袜久久久久久app| 亚洲精品一二三区| 亚洲免费在线精品一区| 一区二区动漫| 夜夜爽99久久国产综合精品女不卡| 亚洲在线国产日韩欧美| 亚洲精品一区二区三区在线观看| 欧美在线视频不卡| 久久精品亚洲一区二区三区浴池| 亚洲午夜高清视频| 亚洲一区二区高清视频| 欧美成在线观看| 欧美国产高清| 国产欧美日韩激情| 国产一区二区三区自拍| 午夜精品亚洲| 欧美精品成人在线| 国产精品欧美日韩| 欧美自拍丝袜亚洲| 欧美在线视频日韩| 亚洲视频一区在线| 性视频1819p久久| 另类图片综合电影| 国产精品分类| 在线一区二区日韩| 国内揄拍国内精品少妇国语| 亚洲乱码国产乱码精品精98午夜 | 欧美成人a视频| 亚洲影院色无极综合| 欧美日韩国产精品一区| 亚洲国产高清一区| 欧美国产视频在线观看| 毛片一区二区三区| 亚洲人成免费| 国产精品自拍视频| 久久久久免费视频| 久热精品视频在线观看一区| 欧美成人高清| 蜜桃av一区| 亚洲国产精品www| 欧美激情一区二区三区在线视频| 亚洲国产成人高清精品| 亚洲激情自拍| 国产精品爽黄69| 麻豆免费精品视频| 欧美福利在线| 久久蜜桃av一区精品变态类天堂| 麻豆成人小视频| 一区二区三区四区精品| 欧美一区二区三区免费观看| 在线观看亚洲专区| 亚洲香蕉网站| 亚洲视频你懂的| 久久久水蜜桃| 欧美一区二区三区视频在线观看| 欧美在线视频不卡| 性久久久久久久| 欧美激情亚洲国产| 国产日韩专区| 亚洲在线一区| 亚洲网在线观看| 欧美精品一区三区在线观看| 久久久成人网| 国产欧美日韩在线| 亚洲一区在线播放| 亚洲欧美欧美一区二区三区| 欧美精品一区二区三区蜜桃 | 欧美在线91| 国产精品成人国产乱一区 | 亚洲国产色一区| 久久一区中文字幕| 免费欧美在线视频| 91久久国产自产拍夜夜嗨| 麻豆freexxxx性91精品| 欧美激情一区二区三区| 亚洲人成欧美中文字幕| 欧美日韩在线一区二区三区| 一本一本久久a久久精品综合妖精|