標籤:des io os 使用 sp 資料 on 代碼 bs
記憶體: 分為五個地區
- 棧區-----------系統分配以及回收記憶體.函數體內建立的變數存在棧區
- 堆區------------由使用者指派和回收,如果使用者忘記回收 可能會導致記憶體不夠用, 程式退出時,堆記憶體由系統回收
- 常量區-------------用於存放常量的記憶體地區
- 靜態區 -------------定義在函數體外面的變數,由系統開闢空間,程式運行過程中一直存在,直至程式退出,由系統回收
- 代碼區----------------存放代碼編譯結果
---------------------------------------------------------------------------------
malloc函數
void *malloc(unsigned int size);
malloc函數向系統申請分配size個連續的記憶體空間 但是不會把分配的空間清0
free();//釋放記憶體
-----------------------------------
void *calloc ( unsigned n,unsigned size);
分配n個size大小的空間
與malloc不同的是calloc申請的記憶體空間會初始化成0;
----------------------------------
void *realloc(void *p, unsigned newSize);
按新的長度重新分配記憶體
這三種都使用free釋放
------------------------------------------
記憶體操作函數
void *memset(void *s, int c, size_t n);
memset (p,0,sizeof(Student));
s開始,長度為n的所有位元組賦值為c;
通常用於清楚結構體或者數組資料
void *memcpy(void *dest,const void *source,size_t n);
從source 拷貝 n個位元組到dest中
int memcmp(const void *buf1,const void *buf2,unsigned int count);
以上記憶體操作函數既可以用於堆記憶體頁可以用於棧記憶體
IOS--Day03---memory allocation 動態記憶體分配