Mảng động có thể được khởi tạo và trả về từ hàm nhờ cấp phát trên heap (không bị hủy khi hàm kết thúc).
Ví dụ: Trả về mảng động từ hàm
#include <iostream>
using namespace std;
int* Array() {
int* a = new int[100]; // cấp phát trên heap
a[0] = 7;
a[1] = 6;
a[2] = 4;
a[3] = 5;
return a; // trả về con trỏ, bộ nhớ vẫn hợp lệ
}
int main() {
int* p = Array();
cout << "Các phần tử: " << p[0] << " " << p[1] << " " << p[2] << " " << p[3] << endl;
delete [] p; // nhớ giải phóng!
return 0;
}
Kết quả
Các phần tử: 7 6 4 5
Cảnh báo: Không trả về con trỏ đến mảng cục bộ (stack array) vì bộ nhớ sẽ bị giải phóng khi hàm kết thúc.