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