Chương 4. Hàm và chương trình ... Khi đó vùng nhớ mà chương trình dịch đã dành cho mảng là không đủ để sử dụng. Đây chính là hạn chế thứ hai của mảng được khai báo trước. Khắc phục các hạn chế trên của kiểu mảng, bây giờ chúng ta sẽ không khai báo (bố trí) trước mảng dữ liệu với kích thước cố định như vậy. Kích thước cụ thể sẽ được cấp phát trong quá trình chạy chương trình theo đúng yêu cầu của NSD. Nhờ vậy chúng ta có đủ số ô nhớ để làm việc mà...
Chương Hàm chương trình cần làm việc với 1000 số nguyên Khi vùng nhớ mà chương trình dịch dành cho mảng khơng đủ để sử dụng Đây hạn chế thứ hai mảng khai báo trước Khắc phục hạn chế kiểu mảng, không khai báo (bố trí) trước mảng liệu với kích thước cố định Kích thước cụ thể cấp phát trình chạy chương trình theo yêu cầu NSD Nhờ có đủ số ô nhớ để làm việc mà tiết kiệm nhớ, không dùng ta thu hồi (cịn gọi giải phóng) số ô nhớ để chương trình sử dụng vào việc khác Hai công việc cấp phát thu hồi thực thơng qua tốn tử new, delete trỏ p Thơng qua p ta làm việc với địa vùng cấp phát Cách thức bố trí nhớ gọi cấp phát động Sau cú pháp câu lệnh new p = new ; // cấp phát phần tử p = new [n] ; // cấp phát n phần tử Ví dụ: int *p ; p = new int ; p = float int[100] ; // cấp phát vùng nhớ chứa số nguyên // cấp phát vùng nhớ chứa 100 số thực Khi gặp toán tử new, chương trình tìm nhớ lượng nhớ rỗi liên tục với số lượng đủ theo yêu cầu cho p trỏ đến địa (byte đầu tiên) vùng nhớ Nếu khơng có vùng nhớ với số lượng việc cấp phát thất bại p = NULL (NULL địa rỗng, khơng xác định) Do ta kiểm tra việc cấp phát có thành cơng hay không thông qua kiểm tra trỏ p hay khác NULL Ví dụ: float *p ; int n ; cout > n; p = new double[n]; if (p == NULL) { cout n ; head = new int[n] ; // cấp phát nhớ chứa n số nguyên for (p=head; p