考試時,常常會遇到需要輸入一個整數,然後根據這個整數來配置記憶體的情況。這時候,學生要知道如何有效地利用 C++ 的記憶體配置來解決問題。程式中的 Data d[n] 就是一個典型的例子。
1. Data d[n] 當作動態記憶體配置
在許多考試或練習中,學生可能會先輸入一個整數 n,這個數字決定了接下來需要多少記憶體來儲存資料。像這樣的寫法:
cin >> n;
Data d[n];
複製代碼
這裡的 d[n] 是根據輸入的 n 來配置陣列的空間。雖然看起來很方便,但這其實只是在 C++ 的某些編譯器(如 GCC)中允許的變數長度陣列(Variable Length Arrays, VLA),而不是標準的 C++ 寫法。VLA 是一種能根據變數大小動態分配記憶體的陣列,這種寫法雖然在某些情況下看起來像是動態記憶體分配,但它不是標準的 C++,而且在不同的環境或編譯器中可能無法使用。
標準的做法:使用 new
標準的 C++ 需要使用 new 來真正做到動態記憶體配置,這樣程式在執行時才能依據使用者輸入的數值來分配記憶體,像這樣: