Your uROCOMInit unit references ActiveX unit and it has to be listed first. The problem is that referencing ActiveX unit will allocate memory via RTL memory manager. The issue is that ActiveX unit in latest IDEs references SysUtils unit via System.Internal.ExcUtils.
Therefore, listing the uROCOMInit unit as first unit in uses clause will make impossible to use any 3rd party memory managers (such as FastMM, NexusMM, EurekaLog, etc.), as GetHeapStatus.TotalAllocated will be not 0.
Verified in Delphi 11 Alexandria.
Suggestion: remove reference to ActiveX unit from mROCOMInit unit like this:
unit uROCOMInit;
interface
implementation
{$IFDEF MSWINDOWS}
const
ole32 = 'ole32.dll';
COINIT_MULTITHREADED = 0; // OLE calls objects on any thread.
function CoInitializeEx(pvReserved: Pointer; coInit: Longint): HResult; stdcall; external ole32 name 'CoInitializeEx';
procedure CoUninitialize; stdcall; external ole32 name 'CoUninitialize';
initialization
CoInitializeEx(0, COINIT_MULTITHREADED);
finalization
CoUninitialize;
{$ENDIF}
end.