私はすべての種類のプラグインで拡張可能なC/C++のシステムを設計しています。多くの場合、(const) char*
とその他のポインタ型で動作する、よく定義されたCの公開APIがあります。プラグインは.soまたは.dllファイルにコンパイルされ、メインアプリケーションは起動時にそれらを読み込み、要求に応じて後でアンロードまたはリロードします。信頼できるかのプラグインは、さまざまなソースから来るかもしれないサンドボックスでのプラグインの実行
、ないので:)今
は、私は、ことを確認したいと思い、1つのプラグインは、彼がいたメモリを解放するためにこのような試みとして愚かな何かを(ない場合このアクションはシステム全体を停止させるのではなく、キューから削除するために誤ったプラグインに関するメインシステムに通知するだけです。
呼び出しは次のように行われているコード:
const char* data = get_my_data();
for(int i = 0; i<plugins; i++)
{
plugins[i]->execute(data);
}
が、データ列「偶然」plugin[0]
解放とは、それを上書きするか、誤っては0x0に対処するためにジャンプしている場合、これは、システム全体をダウンさせるだろう私はこれを望んでいません。このような大惨事をどうやって避けることができますか? (data
文字列を複製することができます。これは私の問題を解決しません:))
私の答えはこれを解決するのに役立ちましたか?その場合は、正解として受け入れてください。 –