C語言動態記憶體分配

2021-06-28 12:32:23 字數 659 閱讀 3200

1、傳統陣列的缺點

(1)陣列的長度必須事先指定,且只能是長整數,不能是變數

例子:int a  [5 ];   // ok

int len = 5; int a [len ];  //error 

(2)傳統形式定義的陣列,該陣列的記憶體程式設計師無法手動釋放

陣列一旦定義,系統就會為該陣列分配儲存空間會一直存在,除非陣列所在的函式執行結束

# includevoid f(void) //當我們寫完這之後,程式自動為這陣列分配了20個位元組的儲存空間

//它只能在本函式執行完畢時由系統自動釋放,程式設計師無法釋放

}int main(void)

(3)陣列的長度不能在函式執行過程中動態的擴充或縮小,一旦定義就不能變化

(4)a函式定義的陣列,在a函式執行期間可以被其他函式使用,但a函式執行完畢後,則無法被其他函式使用。

2、為什麼需要動態分配記憶體

動態陣列很好的解決了傳統陣列的這4個缺陷

傳統陣列也叫靜態陣列

3、動態記憶體分配舉例_動態陣列的構造

/*

malloc是記憶體分配的縮寫

*/# include # include //不能省

int main(void)

c語言動態記憶體分配 C 動態記憶體分配

動態記憶體分配 雖然通過陣列就可以對大量的資料和物件進行有效地管理,但是很多情況下,在程式執行之前,我們並不能確切地知道陣列中會有多少個元素。這種情況下,如果陣列宣告過大,就會造成浪費 宣告過小,就會影響處理。在c 中,動態記憶體分配技術可以保證程式在執行過程中按照需要申請適量記憶體,使用後釋放,從...

C語言動態記憶體分配

c語言動態記憶體分配 動態資料結構可以在執行時靈活新增 刪除或重排資料項。在執行時分配記憶體空間的過程稱為動態記憶體分配。記憶體分配函式如下 malloc 分配所需的位元組大小,並返回指向所分配空間的第乙個位元組的指標 calloc 為元素陣列分配空間,並初始化為零,然後返回指向該記憶體的指標 fr...

C語言 動態記憶體分配

c語言有儲存變數的區域稱之為棧 stack 除此之外 c語言還允許建立自己的動態記憶體區域 以存放一些臨時的資料 這區域稱之為 堆 heap 也就是存放執行時的資料 可以根據程式的需要 向系統申請所需大小的空間 由於未宣告部分定義他們為變數或者陣列因此只能通過指標去訪問 建立記憶體動態分配主要由4個...