VLA (Variable-Length Arrays)** = array ที่ขนาดกำหนดได้ตอน runtime (ไม่ใช่ compile-time constant)
เหตุผลที่ไม่อยู่ในมาตรฐาน C++:
- สร้าง array ใหญ่บน stack ได้ (stack มีพื้นที่จำกัด) → stack overflow risk
- ต้องการการเปลี่ยนแปลงใหญ่โตใน type system ของ C++
- C++ มีทางเลือกที่ดีกว่าและปลอดภัยกว่าแล้ว
ทางเลือกแทน VLA: std::vector
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
for (auto it = vec.begin(); it != vec.end(); it++)
cout << *it << endl;
return 0;
}
ผลลัพธ์
1 2 3 4 5
std::vector จัดสรรบน heap ขยาย/หดได้อัตโนมัติ จัดการ memory ให้เอง ปลอดภัยกว่า VLA มาก