How about "user's heap allocation/deallocation algorithm"?

Started by Theo Gottwald, April 03, 2023, 09:40:14 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Theo Gottwald

My Question is, does this Heap stuff also affect Oxygen?

QuoteJanuary 2022
Compiler 1.6.879. Contains some error recovery. Also contains a new procedure ExStorage.EnableLFH. This procedure enables low fragment heap algorithms for the main process heap. What it is you may see in Microsoft docs.

The motivation of this change is the following. By unknown reason Microsoft some time ago changed default for user's heap allocation/deallocation algorithm from LFH to so-called standard, as it was before Windows Vista. For applications linked by Visual Studio as releases RTL library sets algorithm to LFH. Using standard allocation/deallocation algorithm leads to very slow operations, esepecially deallocation.

To use LFH it is sufficient to insert call of ExStorage.EnableLFH in the beginning of the application body. To enable LFH for other heaps it is necessary to insert call of WIN32.HeapSetInformation procedure with the appropriateparameters. If an ADW Modula-2 linked application is run under the debugger, then the standard allocation/deallocation algorithm will be used. But, when environment variable _NO_DEBUG_HEAP = 1, then LFH will be used under debugger too.

Source: ADW-Modula