C 語言動態堆記憶體分配

2021-09-13 01:50:24 字數 757 閱讀 2643

一、記憶體可以分為棧、堆、靜態儲存區、常量儲存區。

二、malloc 分配記憶體

#include#include#includeint main() 

/* 將malloc分配的記憶體初始化為0 */

memset(p, 0, sizeof(int)); // void * memset(void * p, int c, int n)

/* 對分配的記憶體操作 */

*p = 2;

printf("%d", *p);

/* 釋放記憶體空間(必須,否則會發生記憶體洩漏) */

free(p); // void free (void * p)

p = null;

/* free只釋放指標指向的內容,指標原來的值仍指向原來指向的地方,此時的指標稱為野指標。若此時操作指標會導致不可預期的錯誤 */

}

二、calloc 函式分配記憶體

#include#include#define size 5

int main()

/* 為p指向的size個int型空間賦值 */

for (i = 0; i三、realloc 函式分配記憶體差不多不細說

四、動態陣列

#include#include#define size 5

int main()

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

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

指標 堆記憶體分配(動態記憶體)

一 對於普通陣列來說,在定義或初始化時必須確定元素個數,即下標必須是已知的,即在編譯時已知。例 定義陣列時 int a 6 初始化陣列時,float a 對陣列a來說,雖然沒有下標,但是通過 中的元素個數,可以查出其下標為4。像這樣的格式 int a 錯誤,下標未知 int a n 錯誤,同上 in...

C語言動態記憶體分配

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