C語言 記憶體管理

2022-05-17 05:42:49 字數 1923 閱讀 6338

#include void *malloc(size_t size);
功能:在記憶體的動態儲存區(堆區)中分配一塊長度為size位元組的連續區域,用來存放型別說明符指定的型別。分配的記憶體空間內容不確定,一般使用memset初始化。

引數:返回值:

失敗:null

#include void

free(void *ptr);

返回值:無

#define _crt_secure_no_warnings#include 

#include

#include

#include

#include

int main(void);

//1、開闢堆空間儲存資料

//int* p (強制轉換的型別*)malloc(sizeof(開闢型別大小));

int* p = (int*)malloc(sizeof(int

));

//2、使用堆空間

*p = 123

; printf(

"%d\n

", *p);

//3、釋放堆空間

free

(p);

//避免野指標出現

//p = null;

//檢視記憶體位址、p為野指標

printf("

%p\n

", p);

//操作野指標、釋放後再次使用堆空間

*p = 123

; printf(

"%d\n

", *p);

return0;

}

堆空間 使用案例

#define _crt_secure_no_warnings#include 

#include

#include

#include

#include

int main(void

)

//通過指標儲存操作堆空間

for (int i = 0; i < 10; i++)

//輸出堆空間內容

for (int i = 0; i < 10; i++)

//釋放記憶體

free

(p);

return0;

}

堆空間 使用案例:2

#define _crt_secure_no_warnings#include 

#include

#include

#include

#include

#define max 10

int main(void

)

for (size_t i = 0; i < max; i++)

//如p++改變指標位址free則無法釋放記憶體

free

(p);

return0;

}

堆空間 使用案例:堆空間儲存資料注意

#define _crt_secure_no_warnings#include 

#include

#include

#include

#include

int main(void

)

//賦值

for (int i = 0; i < 5; i++)

}//列印

for (int i = 0; i < 5; i++)

printf("\n

");}

for (int i = 0; i < 5; i++)

//釋放二級指標堆空間

free

(p);

return0;

}

堆空間 使用案例:二級指標開闢堆空間

c語言記憶體管理

在c語言中,根據資料在記憶體中存在的時間 生存期 不同,將記憶體空間分為三個區 1.程式區 用於儲存程式的 即程式的二進位制 存放函式體的二進位制 2.靜態儲存區 用於儲存全域性變數和靜態變數,這些變數的空間在程式編譯時就已經分配好了.全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態...

C語言 記憶體管理

對於任何的作業系統來說,記憶體都是很寶貴的乙個地方。所以,對於程式語言來說,記憶體管理就顯得尤為重要。c語言 在記憶體中執行的時候,我們大致將占用的記憶體分為4塊區域 區 靜態區 棧區 堆區。這4各區域,有著各自的特點,他們也儲存著我們的程式在執行中的不同型別的資料。弄明白了這4個區域的資料儲存特點...

C語言 記憶體管理

記憶體管理一號傳送門 記憶體管理二號傳送門 對於乙個c語言程式而言,記憶體空間主要由五個部分組成 段 text 資料段 data bss段 bss 堆和棧組成,其中 段,資料段和bss段是編譯的時候由編譯器分配的,而堆和棧是程式執行的時候由系統分配的。在上圖中,由編譯器分配的位址空間都是在連線的時候...