我正在编写一些处理 Windows 结构化异常的代码(在我的情况下,_set_se_translator()
用于将它们转换为 C++ 异常)。
让我担心的是,当异常发生时,我在传递的异常信息中大量使用了指针。我得到了一个指向结构的指针_EXCEPTION_POINTERS
。它包含指向其他两个结构的指针,其中一个可能包含另一个指针字段,该字段使该对象基本上是一个链表。
所有这些指针背后的内存在哪里分配?谁负责解除分配?如果不是我,我可以指望数据有效多长时间以及如何避免泄漏?
我的 se 翻译程序目前看起来像这样:
void se_translator(unsigned int exception_code, struct _EXCEPTION_POINTERS* exception_information) {
_clearfp();
throw se_exception(exception_code, exception_information);
};
而这里的担心是要么里面指向的所有数据exception_information
都超出了我的catch
es内的范围,要么它们都会以某种方式泄漏。
如果有一些文档讨论了这一点,我想指出它。