Я разработал dll MFC, содержащий функцию, имеющую этот прототип:
//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
}
нарушение кучи происходит непосредственно перед существованием блока кода