GIÁO TRÌNH C++ - Trang 51

hoặc

pointer = new type [elements]

Biểu thức đầu tien được dùng để cấp phát bộ nhớ chứa một phần tử có kiểu
type. Lệnh thứ hai được dùng để cấp phát một khối nhớ (một mảng) gồm các
phần tử kiểu type.
Ví dụ:

int * bobby;

bobby = new int [5];

trong trường hợp này, hệ điều hành dành chỗ cho 5 phần tử kiểu

int

trong bộ

nhớ và trả về một con trỏ trỏ đến đầu của khối nhớ. Vì vậy lúc này

bobby

trỏ

đến một khối nhớ hợp lệ gồm 5 phần tử

int

.

Bạn có thể hỏi tôi là có gì khác nhau giữa việc khai báo một mảng với việc cấp
phát bộ nhớ cho một con trỏ như chúng ta vừa làm. Điều quan trọng nhất là
kích thước của một mảng phải là một hằng, điều này giới hạn kích thước của
mảng đến kích thước mà chúng ta chọn khi thiết kế chương trình trong khi đó
cấp phát bộ nhớ động cho phép cấp phát bộ nhớ trong quá trình chạy với kích
thước bất kì.
Bộ nhớ động nói chung được quản lí bởi hệ điều hành và trong các môi trường
đa nhiệm có thể chạy một lúc vài chương trình có một khả năng có thể xảy ra là
hết bộ nhớ để cấp phát. Nếu điều này xảy ra và hệ điều hành không thể cấp phát
bộ nhớ như chúng ta yêu cầu với toán tử

new

, một con trỏ null (zero) sẽ được trả

về. Vì vậy các bạn nên kiểm tra xem con trỏ trả về bởi toán tử

new

có bằng null

hay không:

int * bobby;

bobby = new int [5];

if (bobby == NULL) {

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.