記憶體四區中堆區見解

2022-08-31 00:06:28 字數 999 閱讀 8688

堆區

由程式設計師分配釋放 若程式設計師不釋放,則在程式結束後自動釋放。

堆區就像定義一樣,由程式設計師自己分配,這裡我們使用malloc函式來分配空間;

#include

#include

#include

char *getmem(int num)

char *p = null;

p = (char *)malloc(sizeof(char) * num);//在堆區分配一塊記憶體,並將指標指向這塊區域

if(p == null)//判斷是否成功分配記憶體

return null;

return p;//這裡返回的是位址,即在堆區上分配記憶體的首位址

int main()

char *tmp = null;

tmp = getmem(10);//將10傳給形參num

//在堆區分配的記憶體空間在子函式執行完畢之後,是不會被析構掉

if(tmp == null)//判斷是否成功分配記憶體空間,

printf("func the getmem() err\n");

return -1;

strcpy(tmp,"1122");//向tmp所指向的記憶體空間拷貝資料,而不是將資料copy到tmp變數裡

printf("%s\n",tmp);//列印字串

if(tmp != null)//如果tmp指向的不是空位址,則進入if語句

free(tmp);//將堆區分配的記憶體空間釋放掉,但是tmp任然存放所分配空間的位址

printf("%s\n",tmp);//列印的是一堆亂碼

tmp = null;//再次將其指向null

system("pause");

return 0;

這樣我們就可以發現,堆區和棧區的不同,在堆區上分配的記憶體空間是不會自動釋放的,除非當整個程式都執行完畢。所以如果在做乙個大型專案的時候,為了節約資源,當我們不再用它或者很少再使用它的時候,我們可以將其釋放掉,等到用的時候重新分配

記憶體四區筆記

include include include void print arr int buf,int n int main 棧中陣列 void malloc size t size char p1 malloc sizeof char 1000 free p1 int p malloc sizeof...

記憶體四區專題

程式的記憶體四區模型 1.作業系統把物理硬碟 load到記憶體中 2.作業系統把c 分成四個區 3.作業系統找到main函式入口執行 4.在被呼叫函式裡面malloc的記憶體,首位址傳給別呼叫哪個函式有兩種方法 a.return b.指標做函式引數 5.主呼叫函式分配的記憶體 堆 stack 全域性...

1 記憶體四區

資料型別的概念 型別 是對資料的抽象,型別相同的資料有相同的表現形式 儲存格式以及相關的操作。程式當中使用的所有資料都必定屬於某一種資料型別。資料型別的本質 資料型別可以理解為建立變數的模具,是固定記憶體大小的別名。資料型別為編譯器預算物件 變數 分配指定的記憶體空間大小。資料型別的別名 inclu...