我开发了一个 MFC dll,其中包含一个具有此原型的函数:
//DLL code
long __declspec(dllexport) GetData(CString csIdentifier, CStringArray& arrOfData)
{
//based on the identifier I must add some strings inside the string array
arrOfData.Add("...");
arrOfData.Add("...");
/*.....................*/
return 1;
}
我遇到的问题是在调用函数之后(从可执行文件)。arrData 的析构函数将被调用并尝试释放内存,但它不会成功,因为arrOfData的分配是在另一个堆(在 dll 内)上完成的。虽然我已经使用相同的环境设置编译了两个应用程序(Exe 和 Dll),但在调试和发布模式下我仍然遇到问题。我该如何解决这个问题?
//Executable code
{
CStringArray arrData;
GetData("Identifier",arrData);
//data is accesible
}
堆冲突发生在代码块存在之前