在 C 中,聲明具有運行時確定大小的數組的概念經常引起關注。然而,最近遇到的一個特殊的程式碼片段引發了一個問題:如何在不動態分配的情況下聲明數組,同時在運行時指定其大小?
考慮以下 C 程式碼:
int main(int argc, char **argv) { size_t size; cin >> size; int array[size]; for (size_t i = 0; i < size; i++) { array[i] = i; cout << i << endl; } return 0; }
GCC 等編譯器採用了 C99 中允許可變大小數組的功能。這項創新功能使得可以在堆疊上聲明數組,其大小可以在執行期間確定。但是,與使用 new 或 malloc 進行動態分配不同,可變大小的數組在堆疊上分配內存,類似於聲明具有固定大小的數組。
可變大小的陣列比動態分配具有效能優勢,因為它們避免了堆記憶體管理的開銷。透過在堆疊上分配內存,這些數組減少了內存碎片的機會並增強了程式性能。
需要強調的是,此功能是 C99 獨有的,舊版的 C 語言不支援。因此,如果您遇到依賴可變大小數組的程式碼,請確保使用符合 C99 的編譯器進行編譯,以避免儲存大小錯誤。
以上是如何在沒有動態記憶體分配的情況下在 C 中聲明運行時大小的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!