int length = 5;
int hi[length];
int length = 5;
int *hi = new int[length];
我被教導的編譯器使用C抱怨,每當你嘗試靜態分配數組瓦特/尺寸並不是恆定的。所以,如果你需要大小未知的數組,你需要動態分配內存。但是,現在有編譯器允許第一個例子,他們究竟做了什麼?他們仍然在數據段中,還是不在堆上?如果他們在堆上,那麼這些例子之間有什麼區別,爲什麼我仍然不得不在第二個例子中調用delete [],而不是第一個例子?
C編譯器不會,因爲這在C99中是合法的。 – chris 2013-03-27 03:39:49
檢查http://stackoverflow.com/questions/12544796/what-is-the-difference-between-static-and-dynamic-arrays-in-c的答案 – 2013-03-27 03:47:11
@ user2209441,無關的問題:你是如何評論這個的問題只有1個代表? – 2013-03-27 04:39:20