私は次の構造を持っています(簡略化):
class myType
{
static char* data;
//more private data here
public:
//public interface here
};
dataのすべてのインスタンス間で共有されるリソースでmyTypeあり、動的に割り当てられたメモリ (初期化時にいずれかのインスタンスによって割り当てられる) を指します。
ここまでは順調ですね。が指すメモリを解放する必要があるときに問題が発生しdataます。参照カウントはここでは解決策ではありません。myTypeこれは、実行のある時点で のインスタンスが 1 つも存在しない可能性があり、後で新しいインスタンスを作成できるため、data永続化する必要があるためです。
ドライバーのアンロード時にそのメモリを解放する必要がありますが、アンロードはmyTypeオブジェクトの実際の破壊とは関係がないため、data手動で解放する必要があります。これは受け入れられますが、アンロード ハンドラからはアクセスできませんdata(そうあるべきです) 。private確かに、内部でstaticand関数を作成することはできますが、それは正しくないようです。結局のところ、イニシャライザは必要なかったのに、なぜメモリを解放するために必要なのでしょうか? そのデータは、外部インスタンスからアクセスできないようにする必要があります。public destroymyTypepublicmyType
この件に関する洞察をいただければ幸いです。