นี่คือโปรแกรม C++ สำหรับเริ่มต้นอาร์เรย์แบบไดนามิก ใช้การจัดสรรหน่วยความจำแบบไดนามิกเพื่อคืนอาร์เรย์ท้องถิ่น (local array) จากฟังก์ชัน Array()
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
int* Array() {
int* a = new int[100]; // จัดสรรอาร์เรย์ 100 จำนวนเต็มบน heap
a[0] = 7;
a[1] = 6;
a[2] = 4;
a[3] = 5;
return a; // คืน pointer ไปยังหน่วยความจำบน heap (ปลอดภัย)
}
int main() {
int* p = Array();
cout << "The elements are: " << p[0] << " " << p[1] << " " << p[2] << " " << p[3];
delete[] p; // ต้องลบเพื่อป้องกัน memory leak
return 0;
}
ผลลัพธ์
The elements are: 7 6 4 5
ข้อสังเกต: ต่างจากบทความก่อนหน้า (1004082798) ที่คืนอาร์เรย์ท้องถิ่น (บน stack) ซึ่งอันตราย โค้ดนี้จัดสรรบน heap ด้วย new จึงปลอดภัยที่จะคืน pointer แต่ต้องจำว่า caller ต้อง delete[] เอง
แนวทางปัจจุบัน: ควรใช้ std::vector หรือ std::unique_ptr<int[]> แทนเพื่อจัดการหน่วยความจำอัตโนมัติ (RAII)