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

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

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

應(yīng)此我們給出3個數(shù)組,分別為內(nèi)存堆,標記數(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)存塊標記
 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è)置為未標記
5         memset(HeapUsed + Offset,0,Size);        // 標記為未使用
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]) // 已標記并未使用
 5             {
 6                 BOOL bContinue = FALSE;
 7                 for(int j=i;j<Size;j++)
 8                     if(!HeapApplyed[j] || HeapUsed[j]) // 未標記或已使用
 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);        // 標記為已使用
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>
            99国产精品久久久久久久久久| 亚洲三级性片| 久久久999国产| 午夜在线一区| 香蕉av福利精品导航| 亚洲欧美综合一区| 久久精品国产99国产精品澳门| 亚洲一区二区三区成人在线视频精品| 999亚洲国产精| 亚洲欧美资源在线| 久久久久综合| 欧美日韩高清在线| 国产精品推荐精品| 在线看欧美视频| 日韩一级大片| 欧美在线日韩在线| 亚洲第一网站免费视频| 亚洲人成欧美中文字幕| 亚洲一区二区不卡免费| 久久嫩草精品久久久精品一| 欧美电影免费观看高清| 欧美视频在线一区| 国产在线播放一区二区三区| 亚洲欧洲偷拍精品| 欧美伊人久久久久久午夜久久久久| 久久精品国产欧美激情| 亚洲黄色在线看| 午夜精品网站| 欧美日本精品在线| 黑人一区二区| 99视频一区二区三区| 欧美精品久久久久久久免费观看 | 亚洲伊人伊色伊影伊综合网 | 亚洲国产精品国自产拍av秋霞| 亚洲国产高潮在线观看| 这里只有视频精品| 美女网站久久| 国产婷婷97碰碰久久人人蜜臀| 亚洲第一中文字幕在线观看| 亚洲无限av看| 欧美激情视频在线播放 | 欧美成人精品高清在线播放| 亚洲中午字幕| 欧美精品自拍| 91久久精品国产91久久性色tv | 欧美淫片网站| 亚洲美女毛片| 欧美黄网免费在线观看| 国内久久精品| 欧美在线播放| 中文av字幕一区| 欧美成人午夜激情视频| 国产主播一区二区三区四区| 午夜日韩在线| 99这里只有精品| 欧美破处大片在线视频| 亚洲精品一区二区在线观看| 欧美a级一区| 性久久久久久久| 国产午夜精品久久久| 欧美一级理论片| 一本色道久久精品| 国产精品久久久久久久免费软件| 99re8这里有精品热视频免费| 亚洲国产视频一区二区| 裸体素人女欧美日韩| 影音先锋在线一区| 久久久亚洲高清| 久久国产一二区| 国产一区二区在线观看免费播放 | 国产精品美女久久久久久2018 | 欧美激情亚洲精品| 欧美黄色成人网| 一本久道久久久| av72成人在线| 国产精品视频久久久| 午夜精品久久久久99热蜜桃导演| 一本久久青青| 国产精品美女久久久浪潮软件| 亚洲淫性视频| 久久成人免费网| 亚洲国产精品久久久久秋霞影院 | 久久综合狠狠| 久久久久久久久久久久久女国产乱| 这里是久久伊人| 国产精品一区二区三区四区| 久久国产免费看| 欧美国产日韩a欧美在线观看| 一区二区三区欧美| 一区二区三区久久| 国产亚洲欧美另类一区二区三区| 久久综合网hezyo| 麻豆免费精品视频| 在线一区亚洲| 欧美亚洲视频一区二区| 影音先锋久久资源网| 亚洲精品123区| 国产区精品在线观看| 欧美国产第一页| 国产精品外国| 亚洲福利av| 国产日产欧美一区| 亚洲国产婷婷香蕉久久久久久99| 欧美一区在线直播| 欧美激情中文字幕一区二区| 欧美一级艳片视频免费观看| 久久久久久成人| 亚洲一区二区三区久久| 久久先锋资源| 欧美一级黄色录像| 欧美日韩国产精品一卡| 久久久www成人免费精品| 欧美日韩高清一区| 欧美成人激情视频免费观看| 国产精品亚洲综合色区韩国| 亚洲国产免费看| 韩国欧美一区| 亚洲欧美精品suv| 一区二区三区色| 欧美成人国产| 欧美激情bt| 激情综合电影网| 欧美一级黄色录像| 欧美在线国产精品| 欧美亚洲第一页| 亚洲久久一区| 日韩视频在线免费| 欧美国产日韩a欧美在线观看| 男人的天堂成人在线| 国产日韩欧美自拍| 一区二区三区四区蜜桃| 一本色道久久综合狠狠躁篇怎么玩| 久久综合伊人77777尤物| 久久久久一区| 影音先锋一区| 欧美成人国产va精品日本一级| 蜜臀av性久久久久蜜臀aⅴ| 国产香蕉97碰碰久久人人| 亚洲视频www| 亚洲欧美精品suv| 国产精品毛片a∨一区二区三区|国 | 欧美国产亚洲另类动漫| 国内精品视频666| 国产精品乱码人人做人人爱| 午夜精品久久久久久久99热浪潮| 欧美精品日韩一区| 亚洲国产小视频在线观看| 亚洲国产日韩一区二区| 老鸭窝毛片一区二区三区| 免费日韩av| 91久久精品国产91久久性色| 欧美激情精品久久久六区热门| 亚洲高清二区| 一区二区高清| 国产精品久久久久久久浪潮网站 | 久久久噜久噜久久综合| 老鸭窝毛片一区二区三区 | 一本久道综合久久精品| 欧美日韩第一区| 亚洲欧美日韩一区二区三区在线观看| 欧美在线观看一区| 在线观看日韩av先锋影音电影院| 久久久久久9| 亚洲精品一二三区| 欧美一级一区| 在线日韩av| 欧美三级黄美女| 亚洲免费视频中文字幕| 嫩草影视亚洲| 亚洲嫩草精品久久| 黄色影院成人| 欧美日韩国产在线播放| 亚洲你懂的在线视频| 欧美成人午夜激情| 亚洲在线免费| 亚洲激情电影在线| 国产精品视频观看| 美女久久一区| 亚洲主播在线| 91久久精品美女| 久久九九热re6这里有精品| 亚洲三级免费| 一色屋精品视频免费看| 欧美香蕉视频| 久久夜色精品国产| 亚洲欧美激情一区| 亚洲精品一区二区三区樱花| 久久精品首页| 一区二区三区日韩精品| 91久久在线播放| 国产一区在线播放| 国产精品成人观看视频免费| 免费日韩av| 久久精品国产欧美激情| 一区二区高清在线| 欧美成人四级电影| 久久久国产精品亚洲一区| 亚洲女人小视频在线观看| 日韩特黄影片| 亚洲第一成人在线|