There is sometimes a problem with running out of memory when it got fragmented.
Is it possible to find the largest free memoryblock ?
I use Delphi 2007 with FastMM. Developing on Windows XP running app on Windows 2003.
Regards
EDIT:
I could add the info that the app is running on a server with 32 GB memory on a Windows Server 2003 x64. But the app is a 32 bit application so the theoretical max allocated memory for each instance is 2 GB. Many instances is run at once. I do not think it is the total physical memory that is to little. I guess when started the app got a 32 bit virtual memory space. This can then be too fragmented during runtime.
I also found the method FastGetHeapStatus that returns a THeapStatus with some fields for free memory. Maybe I could use those.
EDIT2:
I found this How to get the largest available continues memory block.
The code is C but maybe it could be translated to Delphi.
This is the translation to Delphi code that you wanted:
You can use it like this:
Note that I had to subtract 16 bytes from the maximum size, presumably because the dynamic array itself uses a few bytes which were allocated from the same chunk of memory, so the next allocation was based on the next multiple of 16.