C語言基礎(七) 動態記憶體

2021-07-25 13:55:27 字數 1008 閱讀 2710

/**

* 2023年12月24日13:26:57

* malloc函式的簡單用法; malloc是memory(記憶體)allocate(分配)的縮寫

*/# include

//# include //或者stdlib.h

# include

int main()

*p = 5;

printf("%d\n", *p);

/*free(p) 表示把p所指向的記憶體(動態的)給釋放掉,但p本身所佔的記憶體是靜態的,

不能被釋放掉!p本身所佔的記憶體只能在p所在的函式執行終止時才能被自動釋放掉!

*/free(p);

printf("%d\n", *p);

return

0;}

傳統陣列的缺點:

陣列的長度只能事先指定,且只能是常整數,不能是變數

傳統形式定義的陣列,該陣列的記憶體程式設計師無法手動釋放陣列一旦定義,系統為該陣列分配的空間一直存在,除非陣列所在的函式執行終止

陣列的長度不能在函式執行的過程中動態地擴充或者縮小,陣列的長度一旦定義其長度就不再更改

a函式定義的陣列,在a函式執行期間可以被其他函式使用;但a函式執行完畢之後,a函式中的陣列就無法被其他函式使用

總之,傳統方式定義的陣列不能夠有效地跨函式使用

# include 

# include

int main()

//擴充或是縮小動態記憶體

//如果動態記憶體被縮小,則位址靠在後面的資料將會丟失

realloc(parr, sizeof(int)*(len-1));

printf("print the array? y/n");

getchar();

if (getchar()=='y')

}//釋放陣列所佔的堆記憶體

free(parr);

return

0;}

C語言基礎 動態記憶體分配

void malloc size t size malloc的引數是需要分配的 位元組 數 請求成功返回乙個指向被分配記憶體塊起始位置的指標 否則返回 null 指標 所以對每個從該函式返回的指標都需進行檢查 例項 分配乙個100個int16u型陣列 int16u lp tmp lp tmp mal...

C語言 動態記憶體

動態記憶體 動態的建立記憶體,申請記憶體空間為變數 存放於堆區,不能通過變數名或陣列名引用,只能通過指標引用,在windows中,堆中最大的連續記憶體塊為1.3g左右。標頭檔案 includemalloc 在空閒記憶體中分配連續記憶體,約等於2g,分配成功時返回乙個指向該記憶體塊的指標即第乙個位元組...

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

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