首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言動態記憶體分配與靜態分配的差異與應用場景

     編輯:程式設計綜合問答

靜態分配

  • 編譯期決定大小,如 int arr[100];
  • 存放於資料段(全域/靜態)或堆疊(區域陣列)。
  • 生命週期固定,無法在執行期調整。

動態分配

  • 執行期根據實際需求向堆申請,如 int *p = malloc(n * sizeof(int));
  • 大小由變數決定,適合「使用者輸入 n」或「讀取檔案後才知筆數」的情境。
  • 必須手動 free(p) 釋放,否則造成記憶體洩漏。

典型應用場景

// 使用者指定陣列大小
int n;
scanf("%d", &n);
int *arr = malloc(n * sizeof(int));
if (!arr) exit(1); // 配置失敗處理
// ... 使用 arr ...
free(arr);

總結

靜態分配簡單高效,適用於大小固定、生命週期明確的資料;動態分配靈活,適用於大小不定、需跨函數共享或大型資料結構。現代系統記憶體充裕,合理使用動態分配並搭配 RAII/智慧指標可大幅降低洩漏風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved