C動態主記憶體分配
外觀
C標準函式庫 |
---|
一般 |
雜項 |
C動態主記憶體分配是在C語言中為了實現動態主記憶體分配而進行的手動主記憶體管理。這種管理是通過C標準函式庫中的malloc
、realloc
、calloc
、free
等函數進行的。[1][2]
C++ 為了相容 C 語言也提供這些函數,但是更推薦使用 new
、delete
運算子來完成類似的操作。[3]
malloc
所實際使用的主記憶體分配機制有很多不同的實現,執行時間和主記憶體消耗各有不同。
函數概述
[編輯]C 動態主記憶體分配函數在標頭檔 stdlib.h
中聲明(C++ 中對應的標頭檔名稱為 cstdlib
)。[1]
函數 | 描述 |
---|---|
malloc
|
分配指定數量的位元組 |
realloc
|
調整指定主記憶體塊的大小,必要時會重新分配 |
calloc
|
分配指定數量的位元組,並初始化為 0 |
free
|
釋放指定的主記憶體塊 |
類型安全
[編輯]malloc
所執行的主記憶體分配基於位元組數而不是類型,其返回類型為 void 指標(void *
),表示該指標所指向區域的資料類型未知。C++ 由於其強型別系統,實際使用該指標時需要進行強制類型轉換,而 C 語言中則不必進行。
int * ptr;
ptr = malloc(10 * sizeof(int)); /* 不进行强制类型转换 */
ptr = (int *)malloc(10 * sizeof(int)); /* 进行强制类型转换 */
另見
[編輯]參考資料
[編輯]- ^ 1.0 1.1 ISO/IEC 9899:1999 specification (PDF). . p. 313, § 7.20.3 "Memory management functions" [2018-07-25]. (原始內容存檔 (PDF)於2018-01-27) (英語).
- ^ Godse, Atul P.; Godse, Deepali A. Advanced C Programming. p. 6-28: Technical Publications. 2008: 400. ISBN 978-81-8431-496-0 (英語).
- ^ Stroustrup, Bjarne. Programming: Principles and Practice Using C++. 1009, §27.4 Free store: Addison Wesley. 2008: 1236. ISBN 978-0-321-54372-1 (英語).
這是一篇關於電腦程式語言的小作品。您可以透過編輯或修訂擴充其內容。 |