Как стать автором
Обновить

Комментарии 4

GlobalMemoryStatus возвращает отрицательные числа при более чем 4 ГиБ ОЗУ

typedef ULONG_PTR SIZE_T;

typedef struct _MEMORYSTATUS {
  DWORD  dwLength;
  DWORD  dwMemoryLoad;
  SIZE_T dwTotalPhys;
  SIZE_T dwAvailPhys;
  SIZE_T dwTotalPageFile;
  SIZE_T dwAvailPageFile;
  SIZE_T dwTotalVirtual;
  SIZE_T dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;

Отрицательное число тут никак не вернётся

Знаю что это перевод

Судя по ссылке, сама функция возвращает -1, т е это не про буфер

Внимательнее почитал доку на msdn, там у них самих так и написано,

On computers with more than 4 GB of memory, the
GlobalMemoryStatus function can return incorrect information,
reporting a value of –1 to indicate an overflow. For this reason,
applications should use the
GlobalMemoryStatusEx function instead.

Что, конечно, странный выбор слов/поведения. Но речь всё-таки про этот буфер - сама функция - void и ничего не вовращает.

Верно, сам недочитал

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории