在Kernel.dll中,定义了struct&函数指针:
struct Data // blahblah
void (*Callback)(const Data & data);
在Tool.dll中,有一个util函数:
void GetData(Callback callback)
{
// create a thread with "ThreadProc()" method, and pass the callback in
}
void ThreadProc()
{
Data data;
// fill the struct
if (callback) callback(data); // this "callback" is the callback func ptr passed to "GetData()" func above.
}
在main.exe中,有真正的逻辑:
void OnData(const Data & data)
{
// do something
}
int main()
{
GetData(&OnData);
}
一切运行良好,但随后#34;堆已损坏"。
即使我删除了" OnData"中的所有代码。处理程序,腐败仍然存在。但如果我没有通过任何回调函数(nullptr),腐败就会消失。似乎传递给DLL的函数正在触发问题。
" DLL边界"的神奇之处是什么?这些天我听到了很多关于这些事情的消息。什么技术导致这种神奇的边界"?什么样的事情需要特别注意?