程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> [C解析之八] 動態內存管理

[C解析之八] 動態內存管理

編輯:關於C語言

C解析之八動態內存管理

前言:動態內存管理,C/C++迷人的魅力所在,只因,它可以讓你對計算機的操控上升到近乎無限的程度
動態內存管理和指針,實現C/C++對內存的精准操控,這一特征讓C/C++程序在空間消耗上的表現異常突出,一定層面上可以解釋為什麼C是底層系統開發語言的首選。大到操作系統任務,小到一個通訊錄,都可以發現動態內存管理,如果你深入研究還會發現,動態內存管理發揮的作用無可替代。 1.動態內存管理與指針: 動態內存管理的主要函數malloc() / free()都需要指針的支持,關於指針可閱讀【C解析之四】指針。C語言的內存分配機制(【C解析之三】C語言的內存分配)告訴我們,動態空間的申請是在堆區,malloc函數申請空間,free函數用於釋放。 指針扮演一個什麼樣的角色?存儲在靜態區的全局變量與靜態變量,棧區的局部變量(關於局部變量【C解析之五】函數:你不知道的事有相關的介紹)等都是先聲明定義後使用,換句話說,這些變量都有名稱,類型,通過名稱可以使用這些變量。但在堆區通過動態分配申請的空間是沒有名稱,也沒有類型的,通過指針利用這些空間似乎是唯一的選擇。同時,申請的空間沒有指定類型,賦值給指針之前需要強制轉換。理解這兩點就不難理解函數原型了,如下: \
2.malloc()開辟指定大小的存儲空間: 用法:malloc(int size) ,size為需要開辟的字節數。 返回值:開辟空間的首地址。 3.free()空間釋放內存空間:
用法:free(void *p) , p為指向開辟空間的指針 返回值:無返回值。 下面是malloc()與free()使用的示例:
4.動態內存管理的優勢
所謂動態內存管理,也指它能動態地滿足對內存空間的需求。在很多情況下,我們並不知道該需要多少空間才能滿足要求,比如記錄班級學生成績,有的班級人數多,有的則少,如果定義的數組過大則浪費了內存,過小則會出問題,這種情況下采用動態內存管理的方法,根據不同班級的人數開辟相應大小的空間,會讓程序絲毫內存也不浪費。 鏈表或許是動態內存管理最佳釋義,通過內存管理,鏈表可以存儲從零個數據到無窮個(如果內存足夠)數據,以後將會詳細的介紹這部分內容。 下面是動態分配內存記錄班級成績並顯示平均成績的示例:

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