C/C++記憶體分配以及釋放
int *ptr = (int *)malloc(size countSize);//隨機
int *ptr = (int *)calloc(int number,size itemSize);//預設為0
用 ptr ==nullptr 或者用 ptr == 0來判斷是否分配成功
// 重新分配已有的記憶體
realloc(* _Block,size t_size);
ptr = (int *)realloc(ptr,size t_size);
//若第二次分配的記憶體小於之前的記憶體,已經賦予的值,重新分配後不會改變,重新分配後,地址不變
//若擴充套件記憶體,地址會改變,已經賦予的值不會改變
free(ptr)//釋放記憶體。
c++記憶體分配,底層由malloc實現
資料型別 *指標 = new 資料型別
int *p = new int;
*p = 500;
p[0] = 500;
資料型別 *指標 = new 資料型別[]
int *pr = new int[5];
pr[1] = 500;
pr[2] = 500;
記憶體釋放
delete p;
delete[] p;
動態記憶體風險
1丶野指標(懸掛指標)
2丶記憶體碎片
補充
//複製記憶體 可能會超範圍複製
void *memcpy(void *dst,const void *src,size t_size);
//記憶體填充 可能會超範圍填充
memset(void *src,char val,size t_size);
相關文章
- C語言記憶體管理,分配、使用、釋放以及安全性C語言記憶體
- C/C++使用malloc為結構體陣列分配記憶體(及free釋放記憶體)的三種方法C++結構體陣列記憶體
- C++動態記憶體分配C++記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- C++ vector 釋放記憶體的兩種方法C++記憶體
- C++ 指標動態記憶體分配C++指標記憶體
- C# 垃圾回收釋放記憶體C#記憶體
- C++ 類的記憶體分配是怎麼樣的?C++記憶體
- C++ 動態記憶體分配與名稱空間C++記憶體
- C++ - 二級指標動態記憶體申請與釋放C++指標記憶體
- C語言-記憶體分配C語言記憶體
- XCode釋放記憶體XCode記憶體
- C中的記憶體分配模型記憶體模型
- C語言的記憶體分配C語言記憶體
- C++記憶體管理C++記憶體
- vector 的記憶體釋放記憶體
- C++記憶體掃描C++記憶體
- C++記憶體管理剖析C++記憶體
- C程式記憶體的分配,const ,volatile,staticC程式記憶體
- 誰建立誰銷燬,誰分配誰釋放——JNI呼叫時的記憶體管理記憶體
- 垃圾收集器與記憶體分配策略_記憶體分配策略記憶體
- C++手寫記憶體池C++記憶體
- C/C++記憶體對齊原則C++記憶體
- C/C++記憶體對齊詳解C++記憶體
- 【C/C++】4.C++的記憶體管理C++記憶體
- 動態記憶體分配記憶體
- C++記憶體管理:簡易記憶體池的實現C++記憶體
- 從C++看C#託管記憶體與非託管記憶體C++C#記憶體
- C++記憶體模型實踐探索C++記憶體模型
- 如何主動釋放 HeapIdle 的記憶體API記憶體
- golang 釋放記憶體機制的探索Golang記憶體
- vector clear() 方法 記憶體釋放問題記憶體
- c/c++指標從淺入深介紹——基於資料記憶體分配的理解(上)C++指標記憶體
- C++ struct結構體記憶體對齊C++Struct結構體記憶體
- java-方法記憶體分配Java記憶體
- go記憶體分配器Go記憶體
- 深度理解glibc記憶體分配記憶體
- java基礎-記憶體分配Java記憶體