читать об этом here.Как выполнить подсчет ссылок в C?
Мне нужно реализовать вариант такого интерфейса, скажем, нам предоставлено большое пространство памяти для управления, должны быть функции getmem (size) и free (указатель на блок), которые должны быть уверены, что они свободны (указатель на блокировку) может фактически освободить память тогда и только тогда, когда все процессы, использующие этот блок, будут выполнены с использованием этого.
Что я думал о том, чтобы определить структуру Collectable
как указатель на блок, его размер и процесс, используя его счет. то всякий раз, когда процесс с использованием экземпляра структуры Collectable
в первый раз ему приходится явно увеличивать счетчик, и всякий раз, когда процесс free()
, он уменьшается.
Проблема с этим подходом заключается в том, что все процессы должны реагировать на этот интерфейс и явно работать: при назначении коллективного указателя на экземпляр процесс должен явно включать этот счетчик, который меня не удовлетворяет, я думал, может быть, там это способ создать макрос, чтобы это произошло неявно в каждом задании?
Я ищу способов подойти к этой проблеме на некоторое время, так что другие подходы и идеи были бы больш ...
EDIT: выше подход не удовлетворяет меня не только потому, что Безразлично 't выглядят хорошо, но главным образом потому, что я не могу предположить, что код исполняемого процесса будет заботиться об обновлении моего счета. Мне нужен способ убедиться, что это сделано без изменения кода процесса ...
Это не проблема для C. Именно поэтому были созданы другие языки на основе C, например: Objective-C, C++, C# и т. Д. –
Я знаю, но это то, что я должен сделать для домашней работы ... так ... –
Тот факт, что каждая копия указателя должна быть инструментальной, не является «проблемой с этим подходом»: это фундаментальная проблема подсчета ссылок. –