Memory Allocation
1. malloc(size_t size)
- 用途:配置指定大小的記憶體區塊
- 回傳值:回傳
void * 指標,指向配置的記憶體起始位置;失敗則回傳 NULL
- 特性:配置的記憶體內容是未初始化的,裡面可能有任意的垃圾值
int *arr = (int *)malloc(10 * sizeof(int)); // 配置 10 個 int 的空間
2. calloc(size_t nobj, size_t size)
- 用途:配置
nobj 個物件,每個大小為 size bytes
- 特性:與
malloc 不同,calloc 會將配置的記憶體初始化為 0
- 使用時機:當你需要確保記憶體內容為零時使用
int *arr = (int *)calloc(10, sizeof(int)); // 配置 10 個 int,且全部初始化為 0
3. realloc(void *ptr, size_t newsize)
- 用途:調整已配置記憶體的大小
- 運作方式:
- 如果新大小較大,可能會搬移到新位置
- 如果新大小較小,會縮小記憶體區塊
- 原本的內容會被保留(在新大小範圍內)
arr = (int *)realloc(arr, 20 * sizeof(int)); // 擴展為 20 個 int