Thắc mắc về quá trình lưu trữ của bộ nhớ

Anh(Chị) Cho em hỏi việc quản lý bộ nhớ diễn ra như thế nào ạ? E tạo 1 class gồm có 2 kiểu int và size của class này bằng 8. Tạo 2 đối tượng của class là B và C và dùng 2 con trỏ để trỏ đến 2 đối tượng này. nhưng khi in ra màn hình thì địa chỉ 2 của 2 con trỏ này thì lại cách nhau 10 byte trong khi có 8 byte được sử dụng. Vậy 2 byte thừa ra để làm gì ạ. Nếu có cách nào để quản lý được bộ nhớ liên tục thì Anh(chị) giúp e với ạ. E cảm ơn!

0x10, không phải số 10 thập phân. Tại sao là 16 byte? Con trỏ p1 là 8 byte rồi :smiley: a cũng 8 byte nữa là 16.

Mảng 1 chiều thì phải liên tục rồi.

1 Like

tks a. E đã hiểu :v e cứ tưởng là 10 byte cơ :v

đây không phải là mảng.
size của class a = 8 bytes -> ok,
khi bạn tạo ra một con trỏ bộ nhớ sẽ cấp phát một địa chỉ ngẫu nhiên cho con trỏ đó, không phải như mảng mà các địa chỉ liên tiếp nhé.
bạn có thể thêm một vài con trỏ khác chắc chắn địa chỉ giữa các con trỏ sẽ không luôn luôn cách nhau 0x10.
-> để có thể quản lý bộ nhớ một cách liên tục thì bạn sử dụng mảng, khi đó các phần tử của mảng sẽ nằm liên tiếp nhau.
thêm một điểm nữa, mỗi con trỏ sẽ có size là 4 bytes :slight_smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?