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

C 語言動態分配變長數組正確姿勢

     編輯:程式設計綜合問答

錯誤嘗試


int n;
scanf("%d", &n);
int a[n]; // C99 支持 VLA,但非標準 C++,且棧空間有限,大數組易溢出

標準做法:malloc 動態分配


#include 

int n;
scanf("%d", &n);
int *a = (int*)malloc(n * sizeof(int));
if (a == NULL) { /* 處理分配失敗 */ }

// 使用 a[0]...a[n-1] 如同普通數組

free(a); // 用完必須釋放,避免內存洩漏

關鍵點

  • malloc 在**堆**上分配內存,適合大數組或運行時才知大小的場景。
  • 分配失敗返回 NULL,務必判斷。
  • 使用完畢調用 free() 歸還內存,指針置 NULL 防野指針。
  • C++ 建議直接用 std::vector a(n); 自動管理生命周期。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved