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

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

我們知道對于一個數據堆,有申請內存塊,釋放內存塊等操作.

應此我們給出3個數組,分別為內存堆,標記數組,使用是否數組和一個變量用于表示內存堆內剩余空間數.
1     CHAR HeapData[HEAP_LENGTH];
2     CHAR HeapApplyed[HEAP_LENGTH];
3     CHAR HeapUsed[HEAP_LENGTH];
4 
5     int HeapLeft;                            // 剩余Heap大小
初始化時將3個數組全部設為0.
1         memset(HeapData,0,HEAP_LENGTH);
2         memset(HeapApplyed,0,HEAP_LENGTH);
3         memset(HeapUsed,0,HEAP_LENGTH);
然后我們需要一個New操作來申請一塊尚未使用的內存塊.
 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); // 將內存塊標記
 7 
 8         HeapLeft -= Size;
 9         return HeapData + iEmpty;
10     }
一個Free操作來釋放一個內存塊.
1     BOOL Free(const int Offset,const int Size)
2     {
3         if(!Apply(Offset,Size)) throw HEAP_NOTAPPLY;
4         memset(HeapApplyed + Offset,0,Size);    // 設置為未標記
5         memset(HeapUsed + Offset,0,Size);        // 標記為未使用
6         HeapLeft += Size;
7         return TRUE;
8     }
一個GetEmptyAddr操作來獲得第一個符合指定大小的空閑內存卡塊.
 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操作來設置數據.
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);    // 拷貝數據
5         memset(HeapUsed + Offset,1,Size);        // 標記為已使用
6         return TRUE;
7     }
最后我們來測試一下這個堆結構.
 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     }
測試結果:
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 閱讀(2123) 評論(3)  編輯 收藏 引用 所屬分類: 數據結構

評論:
# re: 簡單的堆結構實現 2011-02-16 09:31 | 戰魂小筑
GetEmptyAddr用for也太慢了吧,改成堆棧好些  回復  更多評論
  
# re: 簡單的堆結構實現 2011-02-17 13:20 | 淘寶皇冠店
好  回復  更多評論
  
# re: 簡單的堆結構實現 2013-05-03 15:57 | tb
拿來練手一下  回復  更多評論
  

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩123| 日韩天堂av| 欧美福利小视频| 亚洲肉体裸体xxxx137| 久久中文精品| 亚洲一区二区三区三| 国产视频观看一区| 国产精品成人一区二区三区夜夜夜| 欧美在线欧美在线| 一区二区日韩欧美| 亚洲国产精品一区二区第一页| 久久精品免费播放| 亚洲在线成人精品| 亚洲人成网站在线播| 亚洲黄色高清| 国产日产精品一区二区三区四区的观看方式 | 亚洲主播在线播放| 亚洲精品日韩在线| 黑人极品videos精品欧美裸| 欧美三级在线播放| 欧美午夜在线视频| 欧美午夜激情小视频| 欧美激情综合| 欧美日韩免费观看中文| 美女视频黄免费的久久| 美女啪啪无遮挡免费久久网站| 欧美综合77777色婷婷| 久久激情五月丁香伊人| 老司机久久99久久精品播放免费| 久久精品欧美日韩| 麻豆91精品91久久久的内涵| 欧美精品一区在线发布| 欧美午夜电影网| 国内精品久久久久影院优 | 亚洲日本成人网| 亚洲人成网站在线观看播放| 国产永久精品大片wwwapp| 国内伊人久久久久久网站视频| 亚洲第一区在线| 亚洲乱码国产乱码精品精天堂 | 亚洲综合视频网| 久久精品123| 欧美大片免费久久精品三p| 亚洲国产精品一区二区久 | 欧美韩国日本综合| 亚洲欧美日韩在线高清直播| 欧美日韩国产成人在线| 在线电影院国产精品| 久久男人资源视频| 亚洲欧美国产精品专区久久| 国产精品久久国产愉拍| 极品日韩av| 国产精品亚洲а∨天堂免在线| 99精品国产一区二区青青牛奶| 亚洲一区二区四区| 久久成人一区二区| 久久久久久久综合色一本| 91久久夜色精品国产九色| 久久精品国产99精品国产亚洲性色 | 国产精品一区二区久久久久| 国内精品美女在线观看| 欧美一区二视频| 亚洲尤物在线视频观看| 国产免费观看久久黄| av成人黄色| 亚洲精品一区二区三区不| 久久五月激情| 91久久精品一区| 欧美二区不卡| 欧美日韩大陆在线| 一级日韩一区在线观看| 亚洲精品国偷自产在线99热| 欧美成人午夜免费视在线看片 | 新67194成人永久网站| 亚洲天堂网在线观看| 国产精品九九久久久久久久| 亚洲影院一区| 久久男人av资源网站| 亚洲欧洲在线视频| 欧美亚洲视频一区二区| 亚洲精品在线视频观看| 一区二区三区三区在线| 国产精品久久久久9999吃药| 久久精品国产亚洲一区二区三区| 久久精品国产999大香线蕉| 亚洲国产美女| 亚洲欧美精品伊人久久| 亚洲黑丝一区二区| 亚洲男女自偷自拍| 91久久精品国产91性色tv| 亚洲视频你懂的| 亚洲伊人久久综合| 91久久精品国产91久久性色tv | 国产精品99免费看 | 亚洲一区中文| 免费视频一区二区三区在线观看| 亚洲午夜在线观看| 欧美国产精品va在线观看| 久久av红桃一区二区小说| 欧美国产日韩在线观看| 久久久女女女女999久久| 欧美色大人视频| 亚洲人成在线观看网站高清| 一区二区三区在线视频免费观看 | 国产亚洲精品bt天堂精选| 99综合电影在线视频| 亚洲理论在线| 欧美成人亚洲成人日韩成人| 久久久中精品2020中文| 国产精品一区在线观看你懂的| 亚洲天堂免费观看| 先锋影音网一区二区| 国产精品免费在线| 亚洲一区欧美二区| 欧美中文字幕在线视频| 国产区欧美区日韩区| 欧美亚洲一区| 另类天堂av| 亚洲精品男同| 欧美三级视频在线观看| 亚洲免费网站| 欧美电影在线| 亚洲一区国产视频| 国产嫩草一区二区三区在线观看 | 国产精品亚洲欧美| 久久久欧美一区二区| 亚洲精品在线免费观看视频| 午夜欧美精品| 亚洲精品自在在线观看| 国产精品资源在线观看| 美女视频黄 久久| 亚洲欧美日韩国产另类专区| 女人色偷偷aa久久天堂| 亚洲影音先锋| 亚洲日本成人网| 国产日产欧美一区| 欧美日韩在线观看一区二区三区| 午夜一区二区三视频在线观看 | 久久久97精品| 午夜免费电影一区在线观看| 在线成人免费观看| 国产精品影片在线观看| 欧美国产日韩xxxxx| 久久九九免费| 亚洲男女自偷自拍| 亚洲午夜羞羞片| 亚洲香蕉伊综合在人在线视看| 毛片一区二区三区| 乱人伦精品视频在线观看| 欧美一区二区久久久| 亚洲欧美激情一区二区| 在线视频欧美精品| 亚洲一区二区三区四区五区午夜| 亚洲日韩视频| 在线视频日韩精品| 亚洲一区视频| 久久国产精品电影| 久久精品在线观看| 欧美激情精品久久久久久变态| 欧美国产亚洲另类动漫| 欧美韩日视频| 日韩亚洲欧美一区二区三区| 亚洲精品国产系列| 亚洲一区尤物| 久久天天躁狠狠躁夜夜av| 欧美91福利在线观看| 欧美视频中文字幕在线| 国产视频一区在线观看一区免费| 国产亚洲激情在线| 亚洲精品免费一二三区| 西西人体一区二区| 欧美激情亚洲精品| 午夜久久tv| 欧美精品在线看| 国内精品久久久久影院优| 一级成人国产| 欧美h视频在线| 性欧美xxxx视频在线观看| 欧美成人免费一级人片100| 国产区亚洲区欧美区| 亚洲精品中文字幕女同| 久久综合久色欧美综合狠狠 | 亚洲精品美女久久7777777| 久久午夜激情| 韩国女主播一区二区三区| 亚洲一区二区网站| 日韩视频在线免费观看| 欧美精品福利在线| 亚洲成人在线观看视频| 久久久亚洲成人| 性亚洲最疯狂xxxx高清| 欧美视频在线观看一区二区| 亚洲麻豆av| 亚洲电影免费在线观看| 久久久噜噜噜| 亚洲人成艺术| 日韩一本二本av| 国产日韩精品在线观看| 欧美在线一区二区| 久久久久久久精|