Я выделяю память для нескольких PWideChar в моем главном исполняемом файле
var
pwcValor: PWideChar;
begin
pwcValor := AllocMem( sizeof(WideChar) * Succ(Length(pValor)));
StringToWideChar(pValor, pwcValor, Succ(Length(pValor)));
pMetodo(pCodigo, pCodigoParametro, pwcValor);
Все эти переменные передаются во внешнюю DLL с использованием позднего связывания.У меня есть несколько вопросов об этой ситуации, чтобы избежать утечек памяти.
- Где (на моем exe или моей dll) я должен вызывать FreeMem по этим переменным?FreeMem по этим переменным?
- Когда я могу (или я должен) вызвать FreeMem для этих переменных?
Если я вызываю их во внешней DLL (которая также является моей), я получаю нарушения прав доступа, когда яПопробуйте выгрузить из памяти библиотеку DLL.
Tks
РЕДАКТИРОВАТЬ
Что-то, что я забыл спросить.И наоборот?Я так возвращаю параметры из моей DLL в EXE, поэтому PWideChars распределяются по DLL.Итак, я должен был бы освободить их в DLL, верно?Но я, вероятно, все еще буду использовать их на EXE.Должен ли я предварительно выделить файл EXE, отправить в DLL указатель и заполнить ли он DLL в этих случаях?Или просто скопируйте в EXE возвращенного параметра, чтобы я мог безопасно освободить его в DLL?