这就是问题所在。我的应用程序调用CoCreateInstance()
以创建在第三方 DLL 中实现的 COM 对象。该 DLL 调用set_terminate()
以更改terminate()
处理程序并在那里传递它自己的terminate()
处理程序的地址。
该库不保存初始terminate()
处理程序地址 - 它不关心并且只是更改处理程序并且从不恢复它。一旦 DLL 被卸载,它的代码就不再在进程内存中,所以如果现在terminate()
被调用,程序就会运行到未定义的行为中。
我想检索并存储初始terminate()
处理程序的地址以便能够恢复它。我该怎么做?