#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堆空間 使用案例:2#include
#include
#include
#include
int main(void
)
//通過指標儲存操作堆空間
for (int i = 0; i < 10; i++)
//輸出堆空間內容
for (int i = 0; i < 10; i++)
//釋放記憶體
free
(p);
return0;
}
#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段是編譯的時候由編譯器分配的,而堆和棧是程式執行的時候由系統分配的。在上圖中,由編譯器分配的位址空間都是在連線的時候...