堆疊上的動態數組大小
C 中的可變大小數組(VLA) 允許在運行時指定數組的大小無需訴諸動態分配技術,例如malloc 或new。這與聲明具有固定大小的陣列的傳統方法形成對比。
您提供的程式碼滿足宣告具有在執行時間確定的大小的陣列的標準:
int main(int argc, char **argv) { size_t size; cin >> size; int array[size]; // ... }
編譯器支援
這段程式碼的合法性取決於編譯器對VLA的支援。雖然 C99 標準包含 VLA,但它不是強制性功能。然而,包括 GCC 在內的許多編譯器都支援 VLA 作為可選擴展。
實作
當編譯器為 VLA 分配空間時,它會調整堆疊指標以適應陣列所需的記憶體。這與在堆疊上為常規變數和陣列分配空間的方式類似。
優點
VLA 提供了一種方便的方法來分配數組,而無需開銷和複雜性動態記憶體分配。當數組大小直到運行時才知道時,它特別有用。
限制
VLA 有一些限制:
注意:
重要的是要注意,應明智地使用 VLA 以避免潛在的堆疊溢出問題如果尺寸沒有有效控制。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3