Tôi đang làm việc trên một dự án học tập của tôi (trong C) và nghĩ đến việc chuyển nó sang C++ để có thêm điểm học tập. Một phần của nó liên quan đến một hệ thống thu gom rác cho một gia đình cụ thể của các đối tượng, trong C, tôi thường thực hiện với một malloc/mmap lớn và đi với một đánh dấu ngây thơ đơn giản (tôi có thể xác định tài liệu tham khảo và những thứ tương tự đã).Bộ sưu tập đồ chơi rác: Nhà điều hành mới/xóa đủ?
Vấn đề của tôi là tôi đang xem xét việc chuyển ý tưởng đó tới C++ nhưng không cảm thấy an toàn đủ về sự hiểu biết của tôi về lược đồ quản lý bộ nhớ của nó.
Cho đến nay tôi đã xem xét phân bổ một bộ nhớ lớn và các toán tử nạp chồng mới và xóa trên một lớp cơ sở để gọi các chức năng lấy/giải phóng của vùng bộ nhớ của tôi, và sau đó để cho giai đoạn quét của bộ gom rác xóa các đối tượng. . Như thế đủ chưa? Những cạm bẫy tiềm ẩn mà tôi không thấy ở đây là gì?
Chỉnh sửa: để làm rõ, tôi có thể tìm ra tuổi thọ của các đối tượng được phân bổ đã có, vì vậy không cần phải sử dụng gc abi. Các đối tượng sẽ hiếm khi được điều khiển bằng mã C++ và mã sử dụng chúng có thể thông báo cho gc chúng đang được sử dụng mà không cần kiểm tra ngăn xếp.
Bạn có thể muốn đọc nhận xét của Bjarne Stroustrup về điều này như là một điểm khởi đầu: http://www.stroustrup.com/C++11FAQ.html#gc-abi Nó cũng có liên kết đến các trang của Hans Boehm, vì vậy tôi nghĩ nó là một điểm khởi đầu tuyệt vời. –