int arr[100];int *p = malloc(n * sizeof(int));free(p) 釋放,否則造成記憶體洩漏。// 使用者指定陣列大小
int n;
scanf("%d", &n);
int *arr = malloc(n * sizeof(int));
if (!arr) exit(1); // 配置失敗處理
// ... 使用 arr ...
free(arr);
靜態分配簡單高效,適用於大小固定、生命週期明確的資料;動態分配靈活,適用於大小不定、需跨函數共享或大型資料結構。現代系統記憶體充裕,合理使用動態分配並搭配 RAII/智慧指標可大幅降低洩漏風險。