Windows の構造化例外を処理するコードを書いています (私の場合は、_set_se_translator()
それらを C++ 例外に変換するために使用しています)。
私が気になっているのは、例外が発生したときに渡される例外情報でポインタが多用されていることです。構造体へのポインタが渡されます_EXCEPTION_POINTERS
。これには、他の 2 つの構造体へのポインターが含まれています。そのうちの 1 つには、そのオブジェクトを基本的にリンク リストにする別のポインター フィールドが含まれている可能性があります。
これらすべてのポインターの背後にあるメモリはどこに割り当てられますか? 割り当て解除の責任は誰にありますか? 私ではない場合、データが有効であるとどのくらいの期間期待できますか?また、リークを回避するにはどうすればよいですか?
現在、私の se トランスレータ ルーチンは次のようになっています。
void se_translator(unsigned int exception_code, struct _EXCEPTION_POINTERS* exception_information) {
_clearfp();
throw se_exception(exception_code, exception_information);
};
そして、ここで心配なのは、内部で指されているすべてのデータがexception_information
私の es 内の範囲外にcatch
なるか、何らかの形ですべてが漏洩することです。
これについて説明しているドキュメントがある場合は、それを指摘したいと思います。