Việc sử dụng toán tử new biểu thị yêu cầu cấp phát bộ nhớ trên heap (đống). Nếu bộ nhớ đủ sẵn, nó khởi tạo bộ nhớ và trả về địa chỉ của nó cho biến con trỏ.
Toán tử new chỉ nên được sử dụng nếu đối tượng dữ liệu cần ở lại trong bộ nhớ cho đến khi delete được gọi. Ngược lại, nếu không dùng new, đối tượng sẽ tự động bị hủy khi ra khỏi phạm vi (scope). Nói cách khác, đối tượng dùng new được dọn dẹp thủ công, các đối tượng khác tự động dọn dẹp khi ra khỏi phạm vi.
Cú pháp của toán tử new như sau:
pointer_variable = new datatype;
Ở trên, pointer_variable là biến con trỏ nhận địa chỉ bộ nhớ, datatype là kiểu dữ liệubuiltin cho bộ nhớ.
Chương trình minh họa sử dụng toán tử new:
Ví dụ
#include <iostream>
using namespace std;
int main() {
int *ptr1 = NULL;
ptr1 = new int;
float *ptr2 = new float(223.324);
*ptr1 = 28;
cout << "Giá trị biến con trỏ 1: " << *ptr1 << endl;
cout << "Giá trị biến con trỏ 2: " << *ptr2 << endl;
delete ptr1;
delete ptr2;
return 0;
}
Kết quả
Giá trị biến con trỏ 1: 28 Giá trị biến con trỏ 2: 223.324
Hãy hiểu chương trình trên.
Toán tử new dùng để khởi tạo bộ nhớ và trả về địa chỉ cho con trỏ ptr1 và ptr2. Sau đó giá trị lưu tại vị trí bộ nhớ do ptr1 và ptr2 trỏ đến được hiển thị. Cuối cùng toán tử delete dùng để giải phóng bộ nhớ.
int *ptr1 = NULL; ptr1 = new int; float *ptr2 = new float(223.324); *ptr1 = 28; cout << "Giá trị biến con trỏ 1: " << *ptr1 << endl; cout << "Giá trị biến con trỏ 2: " << *ptr2 << endl; delete ptr1; delete ptr2;