ใน C++ สามารถสร้างอาร์เรย์แบบไดนามิกได้โดยใช้คีย์เวิร์ด new และลบได้ด้วยคีย์เวิร์ด delete
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int i, n;
cout << "Enter total number of elements: " << "\n";
cin >> n;
int *a = new int[n]; // จัดสรรอาร์เรย์ n จำนวนเต็ม
cout << "Enter " << n << " elements" << endl;
for(i = 0; i < n; i++) {
cin >> a[i];
}
cout << "Entered elements are: ";
for(i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
delete[] a; // ต้องใช้ delete[] สำหรับอาร์เรย์
return 0;
}
ผลลัพธ์
Enter total number of elements: 7 Enter 7 elements 1 2 3 4 5 6 7 Entered elements are: 1 2 3 4 5 6 7
ข้อสังเกตสำคัญ:
new int(n)ในต้นฉบับจัดสรร int เดียวที่มีค่าเริ่มต้น n ไม่ใช่อาร์เรย์ ข้อความถูกต้องคือnew int[n]- การลบอาร์เรย์ต้องใช้
delete[] aไม่ใช่delete(a)เพื่อเรียก destructor ของทุกองค์ประกอบและคืนหน่วยความจำถูกต้อง - ใน C++11 ขึ้นไป แนะนำให้ใช้
std::vectorหรือstd::unique_ptrแทน new/delete ดิบ เพื่อความปลอดภัยและป้องกัน memory leak