動態記憶體分配
1.記憶體劃分
棧區:儲存區域性變數和函式引數(遵守先進後出規則。)
char *func(){
char string[ ] = “iphone”;
//此處是把常量區的字串 “iphone” 拷貝到棧記憶體中
return string;//棧記憶體 返回是不安全的 禁止
}
常量區:整型常量,字元常量 ,字串常量等 ( 常量佔用記憶體,只讀狀態,不可修改)
const修飾 const int a = 2;
靜態區(全域性區):static int a = 5;(變數之前加 static ,該變數會儲存在靜態區)
注意:
①只初始化一次,
②若初始化沒給值,預設值為0
③只有程式退出才釋放(永久佔用記憶體)
④全域性變數儲存在靜態區(花括號外面定義的變數)
堆區:malloc 等記憶體分配函式分配的記憶體(手動分配,手動釋放)
程式碼區:程式碼在編譯後轉換成二進位制存放的區域
2.動態記憶體分配
malloc的使用:
int *a = malloc(8);
Stu *b = malloc(sizeof(Stu)*5 );
記憶體釋放:
void free(void *)
3.其他記憶體分配函式
calloc:
void * calloc(unsigned n ,unsigned size);//分配n個size大小的空間,並清零
realloc:
void * realloc(void *p,unsigned newSize);//按給定的地址以及給定的大小分配記憶體
4.記憶體操作函式
初始化記憶體:
void *memset(void *s,int cmsize_t n);//從s指向的記憶體開始初始化n個位元組的內容為 c;
記憶體拷貝:
void memcpy(void *dest,const void *sourse,size_t n);//從source指向的記憶體開始拷貝到 dest ,拷貝n個位元組
記憶體比較:
int memcmp(const void *buf1,const *buf2,unsigned int count);//比較buf1和buf2指向的記憶體是否相等,比較count個位元組
相關文章
- C++動態記憶體分配C++記憶體
- C++ 指標動態記憶體分配C++指標記憶體
- Pytorch視訊記憶體動態分配規律探索PyTorch記憶體
- C++ 動態記憶體分配與名稱空間C++記憶體
- 垃圾收集器與記憶體分配策略_記憶體分配策略記憶體
- 函式指標、回撥函式、動態記憶體分配、檔案操作函式指標記憶體
- c語言野指標與結構體指標動態記憶體分配小解C語言指標結構體記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- java-方法記憶體分配Java記憶體
- go記憶體分配器Go記憶體
- java基礎-記憶體分配Java記憶體
- hadoop 記憶體分配規則Hadoop記憶體
- C語言-記憶體分配C語言記憶體
- 記憶體分配策略學習記憶體
- 深度理解glibc記憶體分配記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- 【Java】 記憶體分配全面淺析Java記憶體
- JVM GC 與 記憶體分配策略JVMGC記憶體
- 記憶體分配問題處理記憶體
- mimalloc記憶體分配程式碼分析記憶體
- C語言的記憶體分配C語言記憶體
- C中的記憶體分配模型記憶體模型
- [20210126]探究oracle記憶體分配.txtOracle記憶體
- Python如何管理記憶體?記憶體分配機制是什麼?Python記憶體
- jvm:記憶體模型、記憶體分配及GC垃圾回收機制JVM記憶體模型GC
- 自動識別Android不合理的記憶體分配Android記憶體
- MySQL記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統
- 圖解Go語言記憶體分配圖解Go記憶體
- Android O 8.0 以上 bitmap記憶體分配Android記憶體
- v8記憶體分配淺談記憶體
- curl 中減少記憶體分配操作記憶體
- JVM 之 記憶體分配與回收策略JVM記憶體
- 深入理解golang:記憶體分配原理Golang記憶體
- Netty 中的記憶體分配淺析Netty記憶體
- Java記憶體區域與分配策略Java記憶體
- 【記憶體管理】頁面分配機制記憶體
- MySQL OOM 系列一 Linux記憶體分配MySqlOOMLinux記憶體
- Go記憶體分配和GC的理解Go記憶體GC