作業系統 動態分配的實現

2021-07-23 17:36:28 字數 1679 閱讀 7660

//******** 動態分割槽分配方式的模擬 ********* 

//#include#include#define free 0 //空閒狀態

#define busy 1 //已用狀態

#define ok 1 //完成

#define error 0 //出錯

#define max_length 640 //最大記憶體空間為640kb

typedef int status;

typedef struct freearea//定義乙個空閒區說明表結構

elemtype;

//---------- 線性表的雙向鍊錶儲存結構 ------------

typedef struct dulnode //double linked list

dulnode,*dulinklist;

dulinklist block_first; //頭結點

dulinklist block_last; //尾結點

status alloc(int);//記憶體分配

status free(int); //記憶體**

status first_fit(int,int);//首次適應演算法

status best_fit(int,int); //最佳適應演算法

void show();//檢視分配

status initblock();//開創空間表

status initblock()//開創帶頭結點的記憶體空間鍊錶

//----------------------- 分 配 主 存 -------------------------

status alloc(int ch)

if(p->data.state==free && p->data.size>request)

p=p->next;

}return error;

}//-------------------- 最佳適應演算法 ------------------------

status best_fit(int id,int request)

p=p->next;

}while(p)

if(p->data.state==free && p->data.size>request)

}p=p->next;

}if(q==null) return error;//沒有找到空閒塊

else

}//----------------------- 主 存 回 收 --------------------

status free(int id)

if(p->next->data.state==free)//與後面的空閒塊相連

break;

}p=p->next;

}return ok;

}//--------------- 顯示主存分配情況 ------------------

void show()

}//----------------------- 主 函 數---------------------------

void main()

else if(choice==3) show();//顯示主存

}} else if(choice==0) break; //退出 else //輸入操作有誤

實現動態分配記憶體

有些時候我們需要在記憶體主動申請記憶體來儲存我們的資料,實現動態分配記憶體的效果,標頭檔案 include 宣告了個關於記憶體動態分配的函式 malloc 函式 函式原型 void malloc usigned int size 作用 在記憶體的動態儲存區 堆區 中分配乙個長度為size的連續空間。...

assign 的動態分配

1 通過變數名動態訪問變數 assign name to 2 直接訪問其他程式的變數 assign zliantest1 sbook fldate to 3 通過索引動態訪問結構成員 assign component sy index of structure to 4 通過欄位名動態地訪問結構成員...

2 2順序表的實現 動態分配

initlist l 初始化表。構造乙個空的線性表l,分配記憶體空間。listinsert l,i,e 插入操作。在表l中的第i個位置上插入指定元素e。listdelete l,i,e 刪除操作。刪除表l中第i個位置的元素,並用e返回刪除元素的值。locateelem l,e 按值查詢操作。在表l中...