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

隨筆-91  評論-137  文章-0  trackbacks-0

我們知道對于一個數(shù)據(jù)堆,有申請內(nèi)存塊,釋放內(nèi)存塊等操作.

應(yīng)此我們給出3個數(shù)組,分別為內(nèi)存堆,標(biāo)記數(shù)組,使用是否數(shù)組和一個變量用于表示內(nèi)存堆內(nèi)剩余空間數(shù).
1     CHAR HeapData[HEAP_LENGTH];
2     CHAR HeapApplyed[HEAP_LENGTH];
3     CHAR HeapUsed[HEAP_LENGTH];
4 
5     int HeapLeft;                            // 剩余Heap大小
初始化時將3個數(shù)組全部設(shè)為0.
1         memset(HeapData,0,HEAP_LENGTH);
2         memset(HeapApplyed,0,HEAP_LENGTH);
3         memset(HeapUsed,0,HEAP_LENGTH);
然后我們需要一個New操作來申請一塊尚未使用的內(nèi)存塊.
 1     CHAR* New(const int Size)
 2     {
 3         if(Size > HeapLeft) throw HEAP_OVERFLOW;
 4         int iEmpty = GetEmptyLeft(Size);
 5 
 6         memset(HeapApplyed + iEmpty,1,Size); // 將內(nèi)存塊標(biāo)記
 7 
 8         HeapLeft -= Size;
 9         return HeapData + iEmpty;
10     }
一個Free操作來釋放一個內(nèi)存塊.
1     BOOL Free(const int Offset,const int Size)
2     {
3         if(!Apply(Offset,Size)) throw HEAP_NOTAPPLY;
4         memset(HeapApplyed + Offset,0,Size);    // 設(shè)置為未標(biāo)記
5         memset(HeapUsed + Offset,0,Size);        // 標(biāo)記為未使用
6         HeapLeft += Size;
7         return TRUE;
8     }
一個GetEmptyAddr操作來獲得第一個符合指定大小的空閑內(nèi)存卡塊.
 1     CHAR* GetEmptyAddr(const int Size)
 2     {
 3         for(int i=0;i<HEAP_LENGTH;i++)
 4             if(HeapApplyed[i] && !HeapUsed[i]) // 已標(biāo)記并未使用
 5             {
 6                 BOOL bContinue = FALSE;
 7                 for(int j=i;j<Size;j++)
 8                     if(!HeapApplyed[j] || HeapUsed[j]) // 未標(biāo)記或已使用
 9                     {
10                         bContinue = TRUE;
11                         break;
12                     }
13                 if(bContinue) continue;
14                 return HeapData + i;
15             }
16         return 0;
17     }
和一個SetData操作來設(shè)置數(shù)據(jù).
1     BOOL SetData(const int Offset,const Type* Data,const int Size)
2     {
3         if(!Apply(Offset,Size)) throw HEAP_NOTAPPLY;
4         memcpy(HeapData + Offset,Data,Size);    // 拷貝數(shù)據(jù)
5         memset(HeapUsed + Offset,1,Size);        // 標(biāo)記為已使用
6         return TRUE;
7     }
最后我們來測試一下這個堆結(jié)構(gòu).
 1     try
 2     {
 3         Heap<CHAR> heap;
 4         heap.New(9000);
 5 
 6         int i = 1000;
 7         heap.Free(0,100);
 8         printf("EmptyAddr:%X\n",heap.GetEmptyAddr(sizeof(int)));
 9 
10         int* Addr1 = (int*)heap.GetEmptyAddr(sizeof(int));
11         heap.SetData((CHAR*)Addr1 - *heap,(CHAR*)&i,sizeof(int));
12 
13         printf("The Data In Heap:%d\n",*Addr1);
14 
15         heap.New(100);
16         printf("EmptyAddr:%X\n",heap.GetEmptyAddr(sizeof(int)));
17 
18         CHAR str[] = "aaaaa";
19         CHAR* Addr2 = heap.GetEmptyAddr(strlen(str));
20         heap.SetData(Addr2 - *heap,str,strlen(str));
21 
22         printf("The Data In Heap:%s\n",Addr2);
23 
24         printf("EmptyAddr:%X\n",heap.GetEmptyAddr(sizeof(int)));
25     }
26     catch(int i)
27     {
28         switch(i)
29         {
30         case HEAP_OVERFLOW:
31             printf("堆溢出\n");
32             break;
33         case HEAP_NOTAPPLY:
34             printf("錯誤的地址\n");
35             break;
36         }
37     }
測試結(jié)果:
1 EmptyAddr:4EFB0
2 The Data In Heap:1000
3 EmptyAddr:4EF4C
4 The Data In Heap:aaaaa
5 EmptyAddr:4EF51

下面給出完整代碼
posted on 2011-02-15 20:59 lwch 閱讀(2119) 評論(3)  編輯 收藏 引用 所屬分類: 數(shù)據(jù)結(jié)構(gòu)

評論:
# re: 簡單的堆結(jié)構(gòu)實現(xiàn) 2011-02-16 09:31 | 戰(zhàn)魂小筑
GetEmptyAddr用for也太慢了吧,改成堆棧好些  回復(fù)  更多評論
  
# re: 簡單的堆結(jié)構(gòu)實現(xiàn) 2011-02-17 13:20 | 淘寶皇冠店
# re: 簡單的堆結(jié)構(gòu)實現(xiàn) 2013-05-03 15:57 | tb
拿來練手一下  回復(fù)  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美色中文字幕| 亚洲最新视频在线| 亚洲精品久久久久久久久久久久| 国产精品久久久久久久久久ktv| 欧美成人一区二免费视频软件| 久久免费国产| 蜜桃伊人久久| 欧美精品一区二区三区高清aⅴ| 欧美久久电影| 欧美日韩在线播放三区| 欧美激情精品久久久久久变态| 老司机成人在线视频| 欧美va天堂在线| 欧美日韩国产一区| 国产日本欧美在线观看| 伊人精品成人久久综合软件| 美女成人午夜| 亚洲大胆人体在线| 欧美.www| 一区二区av在线| 午夜精品久久久久久久| 久久免费视频一区| 欧美激情一区二区三区在线视频| 欧美日韩在线视频首页| 国产区日韩欧美| 欧美精品成人在线| 国产乱码精品一区二区三区不卡 | 免费在线成人av| 欧美精品1区2区3区| 国产精品久久国产精品99gif| 国产亚洲在线观看| 一区二区免费看| 久久久噜噜噜久久| 亚洲欧洲日产国产网站| 亚洲曰本av电影| 欧美mv日韩mv国产网站| 国产专区欧美精品| 午夜日韩av| 亚洲大片av| 久久er99精品| 国产精品拍天天在线| 亚洲日本在线观看| 久久激情视频免费观看| 亚洲美女毛片| 久久嫩草精品久久久精品一| 国产精品久久久999| 欧美精品二区| 在线观看亚洲一区| 亚洲中字黄色| 亚洲国产99精品国自产| 久久国产精品一区二区三区四区| 欧美日韩一区二区三区| 亚洲人精品午夜| 久久久蜜桃一区二区人| 亚洲一区二区三区精品动漫| 欧美激情一区二区三区四区| 亚洲第一精品影视| 欧美制服第一页| aaa亚洲精品一二三区| 欧美国产精品劲爆| 亚洲国产女人aaa毛片在线| 久久九九全国免费精品观看| 亚洲免费人成在线视频观看| 国产精品久久久久久久一区探花| 99视频在线精品国自产拍免费观看| 欧美成人午夜激情在线| 久久亚洲风情| 黄色在线成人| 亚洲二区在线视频| 免播放器亚洲一区| 亚洲国产影院| 欧美黑人一区二区三区| 欧美激情精品久久久六区热门 | 欧美大片一区| 99精品视频免费观看视频| 91久久夜色精品国产网站| 欧美日韩亚洲国产一区| 午夜宅男欧美| 久久夜色精品国产亚洲aⅴ| 亚洲精品女人| 亚洲无亚洲人成网站77777| 国产日韩在线视频| 免费在线成人| 亚洲欧美日韩精品久久| 亚洲一区二区三区四区在线观看 | 亚洲精品一区中文| 国产精品xxxav免费视频| 亚洲宅男天堂在线观看无病毒| 日韩小视频在线观看专区| 国产精品久久久久久影院8一贰佰| 久久精品亚洲| 六十路精品视频| 亚洲综合欧美日韩| 久久五月激情| 亚洲一区二区欧美日韩| 中文日韩在线| 久久国产精品亚洲va麻豆| 日韩午夜在线视频| 麻豆国产va免费精品高清在线| 国产精品欧美久久| 久久欧美中文字幕| 亚洲黄色成人久久久| 日韩亚洲国产精品| 欧美午夜视频在线| 99视频有精品| 久久国产精品久久久久久电车| 久久精品国语| 国产一区二区三区在线播放免费观看 | 黄色影院成人| 亚洲永久免费精品| 亚洲看片一区| 免费看亚洲片| 久久精品国产第一区二区三区| 国产精品大全| 亚洲午夜黄色| 亚洲免费电影在线观看| 欧美激情一区二区三区四区| 亚洲美女诱惑| 免费视频久久| 久久综合色8888| 日韩午夜在线观看视频| 欧美激情视频给我| 欧美激情综合在线| 日韩午夜免费| 亚洲乱码国产乱码精品精天堂| 久久精品视频导航| 一区二区高清在线| 欧美日韩成人综合在线一区二区 | 一区二区日韩免费看| 久久本道综合色狠狠五月| 亚洲国产精品激情在线观看| 国产日韩精品一区| 久久国产精彩视频| 樱桃视频在线观看一区| 欧美不卡三区| 亚洲天堂免费观看| 欧美精品九九| 亚洲精品国久久99热| 中国av一区| 麻豆av一区二区三区| 国产视频一区二区在线观看| 亚洲精品字幕| 亚洲国产小视频| 欧美精品久久久久久久久久| 一本久道久久综合狠狠爱| 日韩视频欧美视频| 亚洲一区二区三区高清| 欧美一级理论片| 亚洲精品久久久久久一区二区 | 一本久久a久久免费精品不卡| 亚洲激情在线观看| 欧美午夜a级限制福利片| 午夜亚洲福利| 久久精品国产99| 日韩亚洲视频| 国产精品成人国产乱一区| 久久黄色级2电影| 欧美日本国产| 欧美亚洲视频在线观看| 欧美aⅴ99久久黑人专区| 亚洲欧美日韩另类精品一区二区三区| 鲁鲁狠狠狠7777一区二区| 亚洲福利在线看| 一区二区三区视频观看| 精品1区2区| 一区二区三区高清| 在线观看成人小视频| 免费观看国产成人| 亚洲私人影院在线观看| 亚洲一区二区三区高清不卡| 国产亚洲在线| 亚洲视频久久| 一区二区av在线| 亚洲国产一区二区a毛片| 亚洲午夜av电影| 欧美激情一区二区三区在线视频观看 | 黄色日韩网站| 亚洲人成在线观看一区二区| 亚洲欧美日韩高清| 欧美精品二区三区四区免费看视频| 欧美一乱一性一交一视频| 欧美精品日韩一区| 麻豆91精品91久久久的内涵| 国产精品午夜电影| 久久久久久久成人| 一区二区三区av| 欧美黑人在线观看| 亚洲欧洲另类国产综合| 亚洲精品123区| 毛片精品免费在线观看| 香蕉久久夜色精品国产使用方法| 亚洲午夜av电影| 欧美三日本三级少妇三2023| 亚洲韩国青草视频| 在线一区观看| 久久在线免费| 99riav国产精品| 99re66热这里只有精品4| 久久久一本精品99久久精品66| 亚洲欧美日韩国产成人精品影院|