Функция GlobalCompact() перетасовывает области глобальной динамической памяти с целью выделения запрошенного пространства. Объявляется следующим образом:
DWORD GlobalCompact(DWORD dwMinFree);
dwMinFree — число запрашиваемых байтов. Обычно это значение передается затем функции GlobalAllocO-
Установите dwMfaiFree равным нулю, чтобы получить наибольшее свободное пространство, которое будет доступно после уплотнения динамической памяти.
Совет. Чтобы освободить максимально возможное пространство, передайте -1 функции GlobalCompact(). Поскольку при этом из динамической памяти удаляются все выгружаемые блоки, программа может получать таким способом огромные области, если, разумеется, на компьютере установлено большое количество микросхем памяти. Однако повторная загрузка вытесненных блоков требует времени, поэтому имейте в виду, что этот трюк может негативно влиять на производительность вашей и других программ.
Классическим способом распределения памяти в Windows является вызов GlobalCompactQ непосредственно перед GlobalAllocO. Передавайте одинаковое число запрашиваемых байтов обеим функциям.
HGLOBAL hMem;
LPANYSTRUCT lpStruct;
GlobalCompact(sizeof(ANYSTRUCT));
hMem = GlobalAlloc(GPTR, sizeof(ANYSTRUCT));
Вызов GlobalConipact() не является обязательным, однако делает более вероятным успешное завершение GlobalAlloc().
Замечание. В расширенном режиме GlobaICompact() не имеет такого значения, как в стандартном режиме, т.к. Windows может автоматически выгружать на диск блоки памяти, чтобы освободить место для GlobalAllocO. Это исключает необходимость уплотнения динамической памяти посредством GlobalCompact(), если GlobalFree() сообщает о наличии достаточного свободного пространства.
Захватывающие экономические стратегии, которые придутся по вкусу всем любителям игр!
igra3k.ru
Строительная компания Системный интегратор
kapitaling.ru