iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Software Development

用leetcode系統化學習C語言系列 第 10

指標(pointer)與動態記憶體(malloc/calloc/realloc/free)攻略-2

  • 分享至 

  • xImage
  •  

今天介紹malloc, calloc, realloc 基本用法(實務建議)

好的習慣(避免犯錯):
int *arr = malloc(n * sizeof arr);
if (arr == NULL) { /
處理配置失敗 */ }

sizeof *arr 的寫法能避免你把型別寫錯(改變 arr 型別時不用改 sizeof)

在 C(非 C++)中 不需要把 malloc 的回傳強制 cast(避免掩蓋忘了包含 <stdlib.h> 的錯誤)。

差別:
malloc(bytes):分配未初始化的 bytes bytes
calloc(nitems, size):分配 nitems * size bytes,並且初始化為全 0(常用於希望初值為 0 的情況)
realloc(ptr, new_size):調整 ptr 指向的記憶體大小(可能搬移到新區塊)。使用方法要小心檢查回傳值

範例:
int *a = malloc(n * sizeof *a); // 分配 n 個 int
int *b = calloc(n, sizeof *b); // 分配並清 0
// 使用完畢
free(a);
free(b);


上一篇
指標(pointer)與動態記憶體(malloc/calloc/realloc/free)攻略-1
下一篇
指標(pointer)與動態記憶體(malloc/calloc/realloc/free)攻略-3
系列文
用leetcode系統化學習C語言12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言