2012-11-15 7 views
5

là có một thuật toán hoặc thực hiện phổ biến để có một nhóm bộ nhớ hoạt động trên cả lớp class A và các lớp dẫn xuất của nó? Thật dễ dàng để tạo một nhóm bộ nhớ hoạt động trong O (1) chỉ cho một lớp A cụ thể. Ví dụ: phân bổ một đoạn dữ liệu lớn, đó là 10*sizeof(A) và sau đó đưa ra 1à khối kích thước sizeof(A) mỗi lần phân bổ là cần thiết.Hồ bơi bộ nhớ C++ cho một lớp và các lớp dẫn xuất của nó

Có thực hiện đơn giản như vậy khi chúng ta cũng có thể xem xét các lớp dẫn xuất của A, có kích thước lớn hơn không? cảm ơn

+2

tại sao bạn cần hồ bơi bộ nhớ cụ thể? bạn không thể chỉ lưu trữ con trỏ và để cho heap làm việc cho bạn? – Jack

+0

nó chỉ là một câu hỏi lý thuyết để thực hành trên toán tử mới và toán tử ... – lezebulon

+0

Cách tiếp cận duy nhất tôi có thể nghĩ là không tạo ra các vấn đề quản lý lớn (đối với lỗ hổng và bất cứ thứ gì bên trong bộ nhớ). kích thước của lớp lớn nhất trong cây phân cấp. Bạn sẽ không lãng phí nhiều không gian nếu các lớp không hoàn toàn khác nhau. – Jack

Trả lời

1

Điều đó thực sự phụ thuộc vào định nghĩa đơn giản của bạn là gì. Như Jack đã nói, bạn có thể sử dụng kích thước lớn nhất của các lớp dẫn xuất là kích thước phần tử của mảng đó là nhóm bộ nhớ. Đó chắc chắn là một thực hiện đơn giản.

Nếu một số loại có kích thước bằng một nửa loại lớn nhất hoặc nhỏ hơn, bạn có thể sửa đổi việc triển khai để cho phép một phiên bản thứ hai chiếm một vị trí tương thích. Điều đó cũng có thể được mở rộng thành các loại kích thước theo quý nếu áp dụng.