ここでそれについて読んでください。
そのようなインターフェイスのバリエーションを実装する必要があります。たとえば、管理するための大きなメモリ空間が与えられているとします。そこには getmem(size) および free(ブロックへのポインタ) 関数があり、free(ブロックへのポインタ) が実際に解放できることを確認する必要があります。そのブロックを使用するすべてのプロセスがそれを使用して完了した場合にのみ、メモリ。
私が考えていたのは、Collectable
構造体をブロックへのポインタ、そのサイズ、およびそれを使用するプロセスとして定義することです。次に、Collectable
構造体インスタンスを初めて使用するプロセスが明示的にカウントをインクリメントする必要があるときはいつでも、プロセスがfree()
それを実行するたびに、カウントがデクリメントされます。
このアプローチの問題は、すべてのプロセスがそのインターフェイスに応答し、明示的に機能させる必要があることです。収集可能なポインターをインスタンスに割り当てるときはいつでも、プロセスはそのカウンターを明示的に含める必要がありますが、これは私を満足させません。これがすべての割り当てで暗黙的に発生するようにマクロを作成しますか?
私はしばらくこの問題にアプローチする方法を探しているので、他のアプローチやアイデアは素晴らしいでしょう...
編集:上記のアプローチは、見栄えが悪いだけでなく、実行中のプロセスのコードがカウントの更新を気にかけているとは思えないため、私を満足させません。プロセスのコードを変更せずに確実に完了する方法が必要です...