Chúng KHÔNG loại trừ lẫn nhau. Hãy sử dụng C++ với libgc (bộ sưu tập Boehm-Reiser-Detlefs). Bạn vẫn có thể sử dụng RAII, con trỏ thông minh và xóa thủ công, nhưng với GC đang chạy, bạn cũng có thể "quên" để xóa một số đối tượng.
@ Câu trả lời của Andy về các tài nguyên bị xử lý quá trễ bỏ lỡ điểm quan trọng: đó không phải là sự chậm trễ phát hành tài nguyên rất quan trọng về mặt ngữ nghĩa, mà là thứ tự phát hành.
Lý do GC có xu hướng không đặt hàng phát hành tốt là nó sẽ yêu cầu một loại topo về yêu cầu đặt hàng (phụ thuộc) và đó là một thuật toán đắt tiền.
Tuy nhiên Ocaml GC có một cơ sở thú vị nơi bạn có thể đính kèm một finaliser cho một đối tượng. Nếu đối tượng trở nên không thể kết nối, finaliser được chạy, tuy nhiên đối tượng không bị xóa (vì finaliser có thể làm cho nó có thể truy cập được nữa: trong trường hợp đó bạn thậm chí có thể đính kèm một finaliser). Những finalisers có thể cung cấp một số kiểm soát đặt hàng.
-1 Câu hỏi là sai. Có các ngôn ngữ được thu thập rác với các destructistic xác định, ví dụ: 'IDisposable' trên .NET cung cấp sự hủy diệt xác định cho C#, VB.NET và F #. –