C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發。盡管C語言提供了許多低級處理的功能,但仍然保持著跨平臺的特性,因為C語言具有可移植性,可拓展性,可重用性等特性,促使C語言仍然在編程語言排行榜上占據一定有利地位。而C語言中比較重要的就是指針,它可以用來鏈表操作,談到鏈表,很多時候為此分配內存采用動態分配而不是靜態分配。
內存分配的概念:
通常定義變量(或對象),編譯器在編譯時都可以根據該變量(或對象)的類型知道所需內存空間的大小,從而系統在適當的時候為它們分配確定的存儲空間。這種內存分配稱為靜態存儲分配;有些操作對象只在程序運行時才能確定,這樣編譯時就無法為他們預定存儲空間,只能在程序運行時,系統根據運行時的要求進行內存分配,這種方法稱為動態存儲分配。所有動態存儲分配都在堆區中進行。
內存不是取之不盡用之不竭,4g、8g、16g是常見的電腦內存大小,打開任務管理器,能看到不同的應用占據的內存情況。如果一個應用程序占了大部分內存,估計別的應用就資源緊張了,那這個應用可能會被卸載,找個節省內存的。
內存管理是計算機接近物理本質的操作,那些程序語言之下的動作,最終都要調動內存來實現。系統的資源不是無限的,系統上運行的程序也不是只有這一個,忽略內存,就會設計出危險的、冗余的代碼產品,或者沒法更好的交互。
動態內存分配的特點:
動態內存是相對靜態內存而言的。所謂動態和靜態就是指內存的分配方式。動態內存是指在堆上分配的內存,而靜態內存是指在棧上分配的內存。動態內存分配的本質就是,什么時候需要一塊內存的時候,再分配這塊內存;當不再需要某一塊內存的時候,就可以把這塊內存釋放掉。這種靈活的內存分配方式,正好適合鏈表這種數據結構。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.