Cấp phát bộ nhớ động dùng tán tử new (Tán tử new được dùng để xin cấp phát vùng nhớ trên phân vùng Heap của bộ nhớ ả) (trả về NULL nếu không đủ bộ nhớ).

Một phần của tài liệu Bài giảng kỹ thuật lập trình chương 1 Pointer (Trang 53 - 55)

phân vùng Heap của bộ nhớ ảo) (trả về NULL nếu không đủ bộ nhớ).

Cú pháp : một vùng nhớ

<data_type> *tencontro = new <data_type> ; dãy vùng nhớ liên tục nhau (mảng một chiều)

<data_type> *tencontro = new <data_type> [num_of _elements];

Ví dụ:

int *ptr = new int; // dynamically allocate an integer

double *p_double = new double;

int *p_arr = new int[10]; // cho mảng 10 phần tử

char *c_str = new char [100]; // cho mảng 100 phần tử

❖ Điều khiến cho kỹ thuật Dynamic memory allocation khác với Static memory allocation là số lượng phần tử có thể được cung cấp trong khi chương trình đang chạy. Ví dụ:

int num_of_elements;

cout << "Enter number of elements you want to create: "; cin >> num_of_elements;

Cấp phát bộ nhớ động

▪ Cấp phát động trong C++

o Giải phóng bộ nhớ dùng toán tử delete

• Khi không muốn sử dụng tiếp vùng nhớ đã được cấp phát cho chương trình trên Heap, chúng ta nên trả lại vùng nhớ đó cho hệ điều hành.

• Thật ra khi chương trình kết thúc, tất cả vùng nhớ của chương trình đều bị hệ điều hành thu hồi, nhưng chúng ta nên giải phóng vùng nhớ không cần thiết càng sớm càng tốt.

• Để xóa một vùng nhớ, chúng ta cần có một địa chỉ cụ thể, địa chỉ đó được giữ bởi con trỏ sau khi gán địa chỉ cấp phát cho nó:

• Đối với dãy vùng nhớ liên tục được cấp phát trên Heap, chúng ta cần thêm vào toán tử [ ] để báo với hệ điều hành rằng vùng nhớ đã được cấp phát không dùng cho một biến đơn.

int *p = new int;

delete p;

int *p_arr = new int[10];

Cấp phát bộ nhớ động

▪ Lưu ý:

Cấpphátbộ nhớ tĩnh Cấp phátbộ nhớ động

int Arr [100]; // khai báo mảng Arr

Nhập vào n và các phân tử của mảng

-Không thề nhập n > 100

-Nếu n < 100 - > dư thừa tài nguyên

int Arr[n]; // Wrong

Nhập vào n và các phân tử của mảng

int *Arr = new int[n];

Một phần của tài liệu Bài giảng kỹ thuật lập trình chương 1 Pointer (Trang 53 - 55)

Tải bản đầy đủ (PDF)

(101 trang)