程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 8-4-存儲緊縮-動態存儲管理-第8章-《數據結構》課本源碼-嚴蔚敏吳偉民版,8-4-《數據結構》

8-4-存儲緊縮-動態存儲管理-第8章-《數據結構》課本源碼-嚴蔚敏吳偉民版,8-4-《數據結構》

編輯:關於C語言

8-4-存儲緊縮-動態存儲管理-第8章-《數據結構》課本源碼-嚴蔚敏吳偉民版,8-4-《數據結構》


課本源碼部分

第8章  動態存儲管理 - 存儲緊縮

——《數據結構》-嚴蔚敏.吳偉民版

       源碼使用說明  鏈接☛☛☛ 《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明

       課本源碼合輯  鏈接☛☛☛ 《數據結構》課本源碼合輯

       習題集全解析  鏈接☛☛☛ 《數據結構題集》習題解析合輯

 

       本源碼引入的文件  鏈接☛ Status.h

       相關測試數據下載  鏈接☛ 數據包

 

      文檔中源碼及測試數據存放目錄:數據結構\▲課本算法實現\▲08 動態存儲管理\04 StorageCompacting

 

概述

      “存儲緊縮”是“堆”結構的動態存儲管理方法。

       在整個動態存儲過程中,不管哪個時刻,可利用空間都是一個地址連續的存儲區,在編譯程序中稱之為"堆",每次分配都是從這個可利用空間中劃出一塊。其實現辦法是:設立一個指針,稱之為堆指針,始終指向堆的最低(或最高)地址。當用戶申請N個單位的存儲塊時,堆指針向高地址(或低地址)稱動N個存儲單位,而移動之前的堆指針的值就是分配給用戶的占用塊的初始地址。

       反之,當需要回收用戶釋放的空閒塊時,由於系統可利用空間始終是一個地址連續的存儲快,因此回收時必須將所釋放的空閒塊合並到整個堆上去才能重新使用,這就是“存儲緊縮”任務。

解析

       存儲緊縮通常有兩種做法,一種是一旦有用戶釋放存儲塊即進行回收緊縮,另一種是在程序執行過程中不回收用戶隨時釋放的存儲塊,直到可利用空間不夠分配或堆指針指向最高地址時才進行存儲緊縮。此時緊縮的目的是將堆中所有的空間塊連成一塊,即將所有的占用塊都集中到可利用空間的低地址區,而剩余的高地址區成為一整個地址連續的空閒塊。

源碼

       文件一 ☛  StorageCompacting.h 

 

       文件二 ☛  StorageCompacting.c 

        文件三 ☛  StorageCompacting-main.c (測試文檔)

 測試結果展示

 

       更多章節持續更新中...微笑

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved