16,動態記憶體分配

2021-07-22 09:43:29 字數 526 閱讀 1716

動態記憶體分配可以在程式執行的時候臨時決定需要分配多少個儲存區

為了管理動態分配記憶體需要使用一組標準函式 

malloc:可以動態分配一組連續的位元組;需要乙個整型引數表示希望分配的位元組個數

他的返回值表示分配好的第乙個位元組的位址,如果失敗,返回null

malloc使用乙個無型別指標儲存區記錄返回值,

需要首先強制型別轉換成有型別指標,然後才可以使用

動態記憶體使用完成之後必須釋放,free函式可以用來釋放動態分配記憶體

這個函式需要動態記憶體的首位址作為引數

如果使用指標作為引數呼叫free函式,則函式結束之後會成為野指標,必須恢復成空指標

乙個函式動態分配的記憶體可以給任何其他函式使用

calloc(儲存區的個數,單個儲存區的大小):

可以確定分配的所有記憶體內容都是0;需要包含stdlib.h標頭檔案

這個函式返回值就是分配好的第乙個儲存區的位址;分配記憶體有可能失敗,失敗返回null

realloc():可以動態改變分配記憶體的大小;盡量少使用這個函式

動態記憶體分配

在c 中建立乙個物件時,我們必須要為這個物件申請一塊記憶體,而且要用建構函式對這塊記憶體進行初始化。c 中的new和delete相對於c的庫函式malloc和free在這方面有很大的優勢,所以我們主要講的是運算子new和delete。當用new來建立乙個物件時,它會自動在堆裡為物件分配記憶體並且為這...

動態記憶體分配

為什麼使用動態記憶體分配?c語言中的一切操作都是基於記憶體的 變數和陣列都是記憶體的別名,如何分配這些記憶體由編譯器在編譯期間決定 定義陣列的時候必須指定陣列唱的 而陣列長度是在編譯期就必須決定的 需求 程式執行的過程中,可能需要使用一些額外的記憶體空間 malloc和free malloc和fre...

動態記憶體分配

c的儲存類別有4種 自動的 auto 靜態的 statics 暫存器的 register 外部的 extern 全域性變數時分配在記憶體中的靜態儲存區 靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,是在編譯時賦初值的,只賦初值一次,在程式執行時它已有初值,以後每次呼叫函式時不再重新賦初...