Computer >> Máy Tính >  >> Lập trình >> C ++

Khi nào thì sử dụng toán tử new trong C ++ và khi nào thì không nên sử dụng?


Việc sử dụng toán tử mới biểu thị yêu cầu cấp phát bộ nhớ trên heap. Nếu có đủ bộ nhớ, nó sẽ khởi tạo bộ nhớ và trả về địa chỉ của nó cho biến con trỏ.

Toán tử mới chỉ nên được sử dụng nếu đối tượng dữ liệu vẫn còn trong bộ nhớ cho đến khi lệnh xóa được gọi. Ngược lại, nếu toán tử mới không được sử dụng, đối tượng sẽ tự động bị hủy khi nó vượt ra khỏi phạm vi. Nói cách khác, các đối tượng sử dụng mới sẽ được dọn dẹp theo cách thủ công trong khi các đối tượng khác được tự động làm sạch khi chúng vượt ra khỏi phạm vi.

Sau đây là cú pháp của toán tử mới.

pointer_variable = new datatype;

Trong cú pháp trên, pointer_variable là biến con trỏ mà địa chỉ bộ nhớ được trả về và kiểu dữ liệu là kiểu dữ liệu tích hợp cho bộ nhớ.

Một chương trình thể hiện việc sử dụng toán tử mới được đưa ra như sau.

Ví dụ

#include <iostream>
using namespace std;
int main () {
   int *ptr1 = NULL;
   ptr1 = new int;
   float *ptr2 = new float(223.324);
   *ptr1 = 28;
   cout << "Value of pointer variable 1 : " << *ptr1 << endl;
   cout << "Value of pointer variable 2 : " << *ptr2 << endl;
   delete ptr1;
   delete ptr2;
   return 0;
}

Đầu ra

Kết quả của chương trình trên như sau.

Value of pointer variable 1 : 28
Value of pointer variable 2 : 223.324

Bây giờ chúng ta hãy hiểu chương trình trên.

Toán tử mới được sử dụng để khởi tạo bộ nhớ và trả về địa chỉ của nó cho biến con trỏ ptr1 và ptr2. Sau đó, các giá trị được lưu trữ tại các vị trí bộ nhớ được trỏ đến bởi ptr1 và ptr2 được hiển thị. Cuối cùng, toán tử xóa được sử dụng để giải phóng bộ nhớ.

Đoạn mã hiển thị điều này như sau -

int *ptr1 = NULL;
ptr1 = new int;
float *ptr2 = new float(223.324);
*ptr1 = 28;
cout << "Value of pointer variable 1 : " << *ptr1 << endl;
cout << "Value of pointer variable 2 : " << *ptr2 << endl;
delete ptr1;
delete ptr2;