亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pooled_allocator.cc

?? 簡單的動態內存管理程序源代碼
?? CC
?? 第 1 頁 / 共 2 頁
字號:
// file: pooled_allocator.cc// author: Marc Bumble// May 12, 2000// Memory allocator for shared memory access// Copyright (C) 2000 by Marc D. Bumble//  This program is free software; you can redistribute it and/or//  modify it under the terms of the GNU General Public License//  as published by the Free Software Foundation; either version 2//  of the License, or (at your option) any later version.//  This program is distributed in the hope that it will be useful,//  but WITHOUT ANY WARRANTY; without even the implied warranty of//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//  GNU General Public License for more details.//  You should have received a copy of the GNU General Public License//  along with this program; if not, write to the Free Software//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.#include <pooled_allocator.h>namespace pooled_allocator {  char none[] = "my_x_key";  unsigned char shmaddr = 0x00000000;    ////////////////////////////////////////////////////////////////////  //////                    Class Chunk  ////////////////////////////////////////////////////////////////////  //////          //////        Unit of  pooled memory composed  of multiple elements.  //////        The  Pool class  defined below  retrieve a  portion of  //////        UNIX  shared  memory  using  the shared  class.   That  //////        retrived memory is formated using the class chunk into  //////        element sized portions.  //////          //////          //////          ////////////////////////////////////////////////////////////////////  // constructor  // constructor  // elem_size         - element   size    in    bytes.  // total_chunk_size  - The  chunk is  instantiated in  a  piece of  //                     memory which is total_chunk_size in bytes.  // Need to  do some calculatons  of memory sizes to  instantiate the  // chunk.  The goal is to  determine how many elements can be stored  // in the chunk, and then setup the space to hold the maximum number  // of elements:  //  //      total_chunk_size = header + bit_vec + elements (1)  //  // where total_chunk_size is defined  above, the header is the Chunk  // overhead or  sizeof(Chunk).  The bit_vec is the  data buffer used  // by the bit  vector.  The rest of the bit  vector overhead is part  // of the header or normal chunk overhead.  Finally, elements is the  // space occupied by the elements stored in the Chunk.  //  // Known quantities:  //  // total_chunk_size - this is a given parameter, the amount of space  //                    allocated to hold the chunk.  //  // header - sizeof(Chunk), the chunk class overhead.  //  // Use equation 1 above to solve for the number of elements:  //  //   total_chunk_size = header + (nelem/8 + 1) + (nelem*esize)  //  // Where:  //  //   nelem - number of elements  //   esize - size of elements  //  // Solve for nelem:  //  //   nelem = (8*(chunk - header - 1))/(1 + 8*esize)       (2)  //     Chunk::Chunk(const int& elem_size,	       const int& total_chunk_size, 	       const int project_id,	       const int segment_page_number)    // elem_size - element size in bytes.    // pg_size   - page size in bytes.    : element_size(elem_size),      // see derivation of num_of_elements above equation 2      num_of_elements((8*(total_chunk_size - sizeof(Chunk) - 1))/(1 + 8*element_size)),      memory_size(num_of_elements*element_size),      bit_vec_size((num_of_elements/8) + 1),      proj_id(project_id),      segment_page_num(segment_page_number),      num_of_segment_pages(total_chunk_size/page_size),      // bit vector monitors num_of_elements elements      // bit vector is stored after this class, which is      //    at the address (this + sizeof(Chunk))      bit_vec(num_of_elements,	      reinterpret_cast<unsigned char*>(this)+	      sizeof(Chunk)) {    // first_elem_num is initially unknown        first_elem_num=-1;    // set the start of the data segment    mem = reinterpret_cast<unsigned char*>(this) +      sizeof(Chunk) + bit_vec_size;    prev=0;    next=0;  };  // Chunk::Chunk()  constructor  // copy constructor  Chunk::Chunk(const Chunk& t)    : element_size(t.element_size),      num_of_elements(t.num_of_elements),      memory_size(t.memory_size),      bit_vec_size(t.bit_vec_size),      proj_id(t.proj_id),      segment_page_num(t.segment_page_num),      num_of_segment_pages(t.num_of_segment_pages),      bit_vec(t.bit_vec) {    first_elem_num=t.first_elem_num;    mem=reinterpret_cast<unsigned char*>(this)+sizeof(Chunk)+bit_vec_size;    for (int i=0; i<memory_size; i++) {      mem[i] = t.mem[i];    }    prev=t.prev;    next=t.next;  }; // copy constructor    // assignment operator  Chunk& Chunk::operator=(const Chunk& t) {    if (this != &t) {		// avoid self assignment: t=t            first_elem_num=t.first_elem_num;       mem=reinterpret_cast<unsigned char*>(this) +	sizeof(Chunk) +	bit_vec_size;      for (int i=0; i<memory_size; i++) {	mem[i] = t.mem[i];      }      bit_vec=t.bit_vec;      prev=t.prev;      next=t.next;    }  // if (this != &t)    return *this;  }; // assignment operator  bool Chunk::operator==(const Chunk& t) {    // Define logical equality for a chunk    bool return_val = false;    if ((element_size==t.element_size) &&	(num_of_elements==t.num_of_elements) &&	(memory_size==t.memory_size) && 	(bit_vec_size==t.bit_vec_size) &&	(!strcmp(pathname,t.pathname)) && 	(proj_id==t.proj_id) &&	(segment_page_num==t.segment_page_num) &&	(num_of_segment_pages==t.num_of_segment_pages) &&	(first_elem_num==t.first_elem_num) &&	(bit_vec==t.bit_vec))      return_val=true;    else      return_val=false;    return return_val;  };  ////////////////////////////////////////////////////////////////////  //////                 Chunk::find()  ////////////////////////////////////////////////////////////////////  //////          //////        num_of_elements - memory for num_of_elements  //////          //////        find free memory  space for num_of_elements.    //////          //////        Returns  the   global  start_element  number   of  the  //////        requested space.  //////          ////////////////////////////////////////////////////////////////////  int Chunk::find(int num_of_elements) {    // find num_of_elements contiguous free blocks Query this chunk to    // see  if num_of_elements  memory  is avail.   If  so return  its    // start_block number, otherwise return -1;    // first find starting point.  This function may return a -1 which    // will be sent to the higher level indicating that the next chunk    // should  be searched  (there is  no more  suitable space  in the    // current chunk).    int start_elem = bit_vec.find_free_items(num_of_elements);    // Convert the start_block  addr which is the block  addr local to    // this block, into a global  block number by adding in the global    // address of the first_elem_num of this chunk    if (start_elem!=-1)      start_elem += first_elem_num;    return start_elem;  };  // Chunk::find()

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女同ⅹxx女同tv| 日韩欧美一区电影| 亚洲人成精品久久久久久| 91麻豆免费视频| 亚洲一区二区欧美日韩| 精品视频在线免费看| 亚洲午夜av在线| 3d动漫精品啪啪一区二区竹菊| 亚洲成av人片一区二区| 日韩免费福利电影在线观看| 久久不见久久见免费视频7| 日韩欧美亚洲国产精品字幕久久久| 丝袜亚洲另类欧美综合| 精品少妇一区二区三区视频免付费| 国产一区二区精品久久91| 国产亚洲福利社区一区| 91视频在线观看免费| 一区二区日韩av| 欧美一区二区三区视频| 国产一区二区三区四区五区美女| 久久精品一区二区| 99riav一区二区三区| 亚洲成人激情综合网| 精品国精品国产| 99视频一区二区| 香蕉成人啪国产精品视频综合网| 555www色欧美视频| 高清国产午夜精品久久久久久| 亚洲男人的天堂av| 日韩欧美高清一区| 91亚洲精华国产精华精华液| 亚洲一区二区免费视频| 国产三级精品三级| 欧美亚洲国产一区二区三区| 久久精工是国产品牌吗| 亚洲综合清纯丝袜自拍| 国产女主播在线一区二区| 欧美亚洲动漫精品| 成人一道本在线| 秋霞av亚洲一区二区三| 亚洲激情一二三区| 久久精品人人爽人人爽| 欧美日本一道本在线视频| 成人av电影在线| 韩国av一区二区三区| 亚洲成av人**亚洲成av**| √…a在线天堂一区| 亚洲欧洲www| 精品国免费一区二区三区| 欧美亚洲综合色| 99久久综合国产精品| 国产毛片精品一区| 日本中文一区二区三区| 一区二区三区免费看视频| 国产精品久久夜| 日韩视频不卡中文| 欧美综合亚洲图片综合区| 成人晚上爱看视频| 国产精品 欧美精品| 麻豆精品国产91久久久久久| 性欧美大战久久久久久久久| 一区二区免费在线| 亚洲天堂网中文字| 国产精品久久久久影视| 国产日韩欧美综合一区| 精品国产伦理网| 日韩欧美一区在线| 91精品国产aⅴ一区二区| 欧美系列在线观看| 欧美在线三级电影| 在线影视一区二区三区| 色天使色偷偷av一区二区| 91在线观看视频| 99re热视频这里只精品| 成人不卡免费av| 成人精品小蝌蚪| 国产福利不卡视频| 成人一道本在线| 99精品偷自拍| 91色九色蝌蚪| 日本高清不卡aⅴ免费网站| 色综合一个色综合| 91福利精品第一导航| 色综合天天综合网天天看片| 色综合中文字幕| 欧美在线不卡一区| 制服丝袜一区二区三区| 国产精品久99| 国产精品美女久久久久aⅴ| 国产精品久久毛片av大全日韩| 国产精品美女久久久久久久久| 日本一区二区免费在线| 亚洲四区在线观看| 亚洲国产日日夜夜| 日本亚洲欧美天堂免费| 久久91精品久久久久久秒播| 国产综合色视频| 成人高清视频免费观看| 91黄视频在线| 欧美一区二区三区啪啪| 精品国产免费久久| 国产精品素人一区二区| 亚洲色图欧美激情| 视频一区中文字幕| 国产在线不卡视频| 色偷偷88欧美精品久久久| 欧美福利视频导航| 国产片一区二区| 亚洲午夜久久久久久久久久久| 免费在线观看成人| proumb性欧美在线观看| 欧美日本在线播放| 国产婷婷色一区二区三区在线| 亚洲色图色小说| 老汉av免费一区二区三区| 粉嫩av一区二区三区在线播放| 一本在线高清不卡dvd| 日韩精品一区二区三区在线观看 | 亚洲乱码一区二区三区在线观看| 亚洲大片一区二区三区| 成人小视频免费在线观看| 91福利在线播放| 久久久久久久久久电影| 亚洲精品美腿丝袜| 国产精品一区在线| 精品视频在线看| 中文字幕av一区二区三区| 亚洲成人自拍一区| 亚洲视频你懂的| 久久超碰97人人做人人爱| 91麻豆文化传媒在线观看| 26uuu国产电影一区二区| 亚洲一区在线观看免费观看电影高清| 日韩经典中文字幕一区| 色一区在线观看| 欧美激情一区不卡| 精品一区二区三区视频| 欧美系列亚洲系列| 中文字幕一区二区三区视频| 精品午夜久久福利影院| 欧美日韩高清一区二区不卡| 国产日韩欧美精品在线| 麻豆精品一区二区av白丝在线| 色噜噜久久综合| 国产精品久久久久桃色tv| 韩国毛片一区二区三区| 日韩一区二区三区视频| 亚洲国产视频网站| 91在线国产福利| 国产农村妇女毛片精品久久麻豆| 男男成人高潮片免费网站| 欧美亚洲国产一区二区三区va | 欧美大白屁股肥臀xxxxxx| 亚洲国产一区二区视频| 94-欧美-setu| 国产精品高清亚洲| 国产黄色91视频| 亚洲精品少妇30p| 播五月开心婷婷综合| 国产欧美一区二区三区网站| 免费精品99久久国产综合精品| 欧美亚洲综合一区| 一区2区3区在线看| 色综合久久88色综合天天6| 自拍偷自拍亚洲精品播放| 成人18精品视频| 日本一区二区高清| 国产99久久久国产精品潘金| 久久免费偷拍视频| 国产精品911| 亚洲国产精品成人综合| 成人精品视频一区| 18欧美乱大交hd1984| 91蜜桃视频在线| 亚洲一区二区三区视频在线播放| 欧美自拍偷拍一区| 亚洲va国产va欧美va观看| 制服丝袜中文字幕亚洲| 九色综合狠狠综合久久| 久久久久久久精| 成人午夜伦理影院| 亚洲乱码国产乱码精品精的特点| 在线观看区一区二| 日韩黄色小视频| 精品乱人伦一区二区三区| 国产精品资源站在线| 国产精品盗摄一区二区三区| 99精品视频免费在线观看| 洋洋成人永久网站入口| 91精品国产麻豆国产自产在线 | 高清久久久久久| 综合电影一区二区三区| 欧美日韩一区二区三区在线看| 视频一区二区中文字幕| 2020国产精品| 91日韩精品一区| 五月天一区二区| 久久综合九色综合久久久精品综合| 国产精品综合视频| 亚洲男帅同性gay1069|