Комментарии 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
Судя по ссылке, сама функция возвращает -1, т е это не про буфер
0
Внимательнее почитал доку на 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 и ничего не вовращает.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Фиксим 21-летнюю игру