Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีเริ่มต้นอาร์เรย์แบบไดนามิกใน C++

นี่คือโปรแกรม 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)