malloc實現原理

2021-07-25 03:34:19 字數 968 閱讀 7410



malloc()是c語言中動態儲存管理 的一組標準庫函式之一。其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。其引數是乙個無符號整形數,返回值 是乙個指向所分配的連續儲存域的起始位址的指標。

動態記憶體分配 就 是指在程式執行的過程中動態地分配或者**儲存空間的分配記憶體的方法。動態記憶體分配不像陣列等靜態記憶體分配方法那樣需要預先分配儲存空間,而是由系統根據 程式的需要即時分配,且分配的大小就是程式要求的大小。本文簡單介紹動態記憶體分配函式malloc()及幾種實現方法。

1. 簡介

malloc()是c語言中動態儲存管理的一組標準庫函式之一。其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。其引數是乙個無符號整形數,返回值是乙個指向所分配的連續儲存域的起始位址的指標。還有一點必須注意的是,當函式未能成功分配儲存空間(如記憶體不足 )就會返回乙個null指標。所以在呼叫該函式時應該檢測返回值是否為null並執行相應的操作。

2. 函式說明

c語言的動態儲存管理由一組標準庫函式實現,其原型在標準檔案裡描述,需要用這些功能時應包含這個檔案。與動態儲存分 配有關的函式共有四個,其中就包括儲存分配函式malloc()。函式原型是:void *malloc (size_t n);這裡的size_t是標準庫里定義的乙個型別,它是乙個無符號整型。這個整型能夠滿足所有對儲存塊大小描述的需要,具體相當於哪個整型由具體的c系 統確定。malloc的返回值為(void *)型別(這是通用指標的乙個重要用途),它分配一片能存放大小為n的資料的儲存塊,返回對應的指標值;如果不能滿足申請(找不到能滿足要求的儲存塊)就 返回null。在使用時,應該把malloc的返回值轉換到特定指標型別,賦給乙個指標。

注意,雖然這裡的儲存塊是通過動態分配得到的,但 是它的大小也是確定的,同樣不允許越界使用。例如上面程式段分配的塊裡能存n個雙精度資料,隨後的使用就必須在這個範圍內進行。越界使用動態分配的儲存 塊,尤其是越界賦值,可能引起非常嚴重的後果,通常會破壞程式的執行系統,可能造成本程式或者整個計算機系統 垮台。

malloc實現原理簡介

malloc 是c語言中動態儲存管理 的一組標準庫函式之一。其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。其引數是乙個無符號整形數,返回值 是乙個指向所分配的連續儲存域的起始位址的指標。動態記憶體分配 就 是指在程式執行的過程中動態地分配或者 儲存空間的分配記憶體的方法。動態記憶體...

malloc的實現原理

malloc 是 c語言中動態 儲存管理 的一組標準庫函式之一。其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間。其引數是乙個無符號整形數,返回值是乙個指向所分配的連續儲存域的起始位址的指標。動態記憶體分配 就 是指在程式執行的過程中動態地分配或者 儲存空間的分配記憶體的方法。動態記憶...

malloc的實現原理

malloc是c語言最常用的標準庫函式之一,用於在程式執行中動態地申請記憶體空間。我們都會使用它,其函式原型為 extern void malloc unsigned int num bytes 那麼它是怎麼實現的呢?不同的編譯環境中對它的實現可能不同。比如glibc the gnu c libra...