В 16-разрядной Windows разница между глобальными и локальными функциями выделения памяти заключалась в том, что GlobalAlloc извлекал фрагмент памяти из глобальной кучи, а LocalAlloc — из локальной. stackoverflow.com
С переходом на 32-разрядную версию Windows реализация этих функций изменилась. learn.microsoft.com stackoverflow.com Теперь для обоих типов функций используется единая куча по умолчанию, и глобальные и локальные функции стали взаимозаменяемыми. learn.microsoft.com stackoverflow.com
Некоторые особенности глобальных и локальных функций:
- Выделение памяти ограничено только доступной физической памятью, включая хранилище в файле подкачки на диске. learn.microsoft.com
- При выделении фиксированной памяти GlobalAlloc и LocalAlloc возвращают указатель, который вызывающий процесс может немедленно использовать для доступа к памяти. learn.microsoft.com
- Функции GlobalReAlloc и LocalReAlloc изменяют размер или атрибуты объекта памяти, выделенного GlobalAlloc и LocalAlloc. learn.microsoft.com
- Функции GlobalDiscard и LocalDiscard позволяют отменить указанный объект памяти без недопустимого дескриптора. learn.microsoft.com
- Функции GlobalFlags и LocalFlags возвращают сведения об указанном объекте памяти, включая число блокировок объекта и указание на то, является ли объект отменённым или уже удалён. learn.microsoft.com