Динамическое распределение памяти в MS Windows. Габрельян Б.В. - 11 стр.

UptoLike

Составители: 

uFlags - определяет, как перераспределять память. Если задан флаг
GMEM_MODIFY, этот параметр определяет аттрибуты блока, и dwBytes
игнорируется. В противном случае, этот параметр управляет переспределением
памяти.
Флаг GMEM_MODIFY указывается в комбинации с флагом GMEM_MOVEABLE.
Тогда блок объявленый прежде фиксированным становится перемещаемым.
Вместо GMEM_MODIFY можно указать GMEM_ZEROINIT. Тогда, если размер
блока увеличивается, дополнительные байты будут обнулены.
Возвращаемые
значения:
В случае успешного завершения возвращает дескриптор нового блока, в случае
ошибки возвращает NULL. Чтобы получить более подробную информацию об
ошибке, можно вызвать функцию GetLastError.
4. GlobalLock
Функция GlobalLock фиксирует блок в глобальной куче и возвращает указатель на
его начало.
С каждым блоком памяти связан счетчик его блокировок (фиксаций). Функция при
каждом обращении увеличивает значение счетчика на единицу.
Поодерживается только для совместимости с Win16.
LPVOID GlobalLock(
HGLOBAL hMem // дескриптор захваченного прежде блока
);
Параметры:
hMem - дескриптор, возвращенный прежде функцией GlobalAlloc() или
GlobalReAlloc().
Возвращаемые значения:
В случае успеха, указатель на первый байт блока, иначе NULL.
5. GlobalUnlock
Функция GlobalUnlock уменьшает значение счетчика фиксаций блока памяти на
единицу, если блок был захвачен с атрибутом GMEM_MOVEABLE, блок
фиксированный (флаг GMEM_FIXED), функция не делает ничего.
Поодерживается только для совместимости с Win16.
BOOL GlobalUnlock(
HGLOBAL hMem // дескриптор захваченного прежде блока
);
Параметры:
hMem - дескриптор, возвращенный прежде функцией GlobalAlloc() или
GlobalReAlloc().
Возвращаемые значения:
Если счетчик фиксаций блока не равен
нулю - возвращает ненулевое значение.
Если неуспех - возвращает ноль. Для получения более подробной информации об
ошибке нужно вызвать функцию GetLastError(). Если GetLastError() возвращает
NO_ERROR, блок уже не зафиксирован в памяти.
6. MEMORYSTATUS
uFlags - определяет, как перераспределять память. Если задан флаг
GMEM_MODIFY, этот параметр определяет аттрибуты блока, и dwBytes
игнорируется. В противном случае, этот параметр управляет переспределением
памяти.
Флаг GMEM_MODIFY указывается в комбинации с флагом GMEM_MOVEABLE.
Тогда блок объявленый прежде фиксированным становится перемещаемым.
Вместо GMEM_MODIFY можно указать GMEM_ZEROINIT. Тогда, если размер
блока увеличивается, дополнительные байты будут обнулены.
Возвращаемые значения:
В случае успешного завершения возвращает дескриптор нового блока, в случае
ошибки возвращает NULL. Чтобы получить более подробную информацию об
ошибке, можно вызвать функцию GetLastError.

4. GlobalLock
Функция GlobalLock фиксирует блок в глобальной куче и возвращает указатель на
его начало.
С каждым блоком памяти связан счетчик его блокировок (фиксаций). Функция при
каждом обращении увеличивает значение счетчика на единицу.
Поодерживается только для совместимости с Win16.
LPVOID GlobalLock(
 HGLOBAL hMem // дескриптор захваченного прежде блока
);
Параметры:
hMem - дескриптор, возвращенный прежде функцией GlobalAlloc() или
GlobalReAlloc().
Возвращаемые значения:
В случае успеха, указатель на первый байт блока, иначе NULL.

5. GlobalUnlock
Функция GlobalUnlock уменьшает значение счетчика фиксаций блока памяти на
единицу, если блок был захвачен с атрибутом GMEM_MOVEABLE, блок
фиксированный (флаг GMEM_FIXED), функция не делает ничего.
Поодерживается только для совместимости с Win16.
BOOL GlobalUnlock(
 HGLOBAL hMem // дескриптор захваченного прежде блока
);
Параметры:
hMem - дескриптор, возвращенный прежде функцией GlobalAlloc() или
GlobalReAlloc().
Возвращаемые значения:
Если счетчик фиксаций блока не равен нулю - возвращает ненулевое значение.
Если неуспех - возвращает ноль. Для получения более подробной информации об
ошибке нужно вызвать функцию GetLastError(). Если GetLastError() возвращает
NO_ERROR, блок уже не зафиксирован в памяти.

6. MEMORYSTATUS