đọc về nó here.Cách triển khai tính tham chiếu trong C?
Tôi cần triển khai một biến thể của giao diện như vậy, giả sử chúng ta có một không gian bộ nhớ lớn để quản lý nên có các hàm getmem (kích thước) và miễn phí (con trỏ để chặn).) thực sự có thể giải phóng bộ nhớ nếu và chỉ khi tất cả các quá trình sử dụng khối đó được thực hiện bằng cách sử dụng nó.
Điều tôi đang nghĩ đến là xác định cấu trúc Collectable
làm con trỏ để chặn, kích thước và quy trình sử dụng số đếm. sau đó bất cứ khi nào một quá trình sử dụng một ví dụ cấu trúc Collectable
lần đầu tiên nó phải tăng số lượng rõ ràng, và bất cứ khi nào quá trình free()
của nó, đếm được giảm đi.
Vấn đề với cách tiếp cận này là tất cả các quy trình phải đáp ứng với giao diện đó và làm cho nó hoạt động rõ ràng: bất cứ khi nào gán con trỏ thu được cho một cá thể, quy trình phải rõ ràng là bộ đếm đó không thỏa mãn tôi. là cách để tạo macro cho điều này xảy ra ngầm định trong mọi bài tập?
Tôi đang tìm cách để tiếp cận vấn đề này trong một thời gian, vì vậy phương pháp và ý tưởng khác sẽ là tuyệt vời ...
EDIT: phương pháp trên không làm hài lòng tôi không chỉ vì nó doesn 't nhìn tốt đẹp nhưng chủ yếu là vì tôi không thể giả định một mã của quá trình đang chạy sẽ quan tâm để cập nhật số của tôi. Tôi cần một cách để đảm bảo thực hiện mà không thay đổi mã của quá trình ...
Đây không phải là vấn đề đối với C. Đây chính là lý do tại sao các ngôn ngữ khác được tạo dựa trên C, ví dụ: Mục tiêu-C, C++, C#, v.v. –
Tôi biết, nhưng đó là những gì tôi phải làm ... vì vậy ... –
Thực tế là mọi bản sao con trỏ phải được thiết kế không phải là "vấn đề với cách tiếp cận này": đó là vấn đề cơ bản của việc đếm tham chiếu. –