C++ ไม่รองรับ Variable Length Arrays (VLA) มาตรฐาน C++11 ระบุว่าขนาดอาร์เรย์ต้องเป็น constant-expression
ดังนั้นโค้ดต่อไปนี้จะไม่ทำงานใน C++ มาตรฐาน:
void displayArray(int n) {
int arr[n]; // Error: variable length array not allowed in C++
// ......
}
int main() {
displayArray(7);
}
ข้อยกเว้น: บางคอมไพเลอร์ (เช่น GCC, Clang) รองรับ VLA เป็น extension (GNU extension) แต่ไม่พกพาได้ (non-portable) และไม่ใช่มาตรฐาน C++
ทางเลือกใน C++ มาตรฐาน:
std::vector<int> arr(n);- ขนาดไดนามิก จัดการหน่วยความจำอัตโนมัติstd::unique_ptr<int[]> arr(new int[n]);- dynamic array แบบ manualstd::array<int, N>- ถ้าขนาดรู้ตอนคอมไพล์ (N เป็น constant)
ข้อสังเกต: C99 รองรับ VLA แต่ C++ ไม่ได้นำมาใช้ เพราะมี vector/array ที่ทันสมัยและปลอดภัยกว่าแล้ว