Является ли ShareMem первым модулем во всех файлах проекта Delphi DLL и EXE? FastMM уже является диспетчером памяти RTL для нескольких последних выпусков Delphi.
Я бы рекомендовал вообще не делиться объектами между DLL и EXE; это просто рецепт боли. Вместо этого используйте пакеты.
Если вам необходимо использовать библиотеки DLL, я бы посоветовал принять обычные соглашения WinAPI: соглашение о вызовах stdcall, используя только C-совместимые типы данных (целые числа, числа с плавающей точкой, указатели, записи, которые не имеют полей управляемых типов, таких как строки, массивы или интерфейсы). Пусть DLL не выделяет память, которую EXE-файл отвечает за освобождение. Вместо этого пусть EXE выделяет и передает DLL память; в качестве альтернативы, инкапсулируйте выделения в логические дескрипторы и экспортируйте функции, которые распоряжаются памятью из DLL, по примеру, например, как работает CloseHandle
функция WinAPI.