Определить размер свободной физич. оперативки

Определить размер свободной физич. оперативки

Хочу закласть (бедный русский язык) в программу функцию определения свободного количества (физической) оперативной памяти. Слышал что-то про MemoryStatusEx u GlobalMemoryStatusEx,а как обяъвлять так и не понял. И ещё хотелось бы узнать как эту циферку занести в переменную (может она не в Мб измеряется) ). К примеру:

#include <iostream>
...
using namespace std;
int main()
{
{
//определение кол-ва свободной оперативки
//кол-во Мб засовываем в любую переменную, например FreeSize
}
cout << "Programm can use " << FreeSize * 0.8 << "Mbs";
...
}

Смотри здесь: «GlobalMemoryStatusEx function» и далее по ссылкам.
Так я уже там смотрел и не понял, English isn't very good)

Ahmasoft, учи English! Без него в программировании далеко не уедешь.

#include <windows.h>
#include <stdio.h>
#include <locale.h>

// Используется для перевода байтов в килобайты
#define DIV 1024
// Ширина поля для вывода чисел
#define WIDTH 8

void main() {

    setlocale(LC_ALL, "Russian");

    MEMORYSTATUSEX statex;

    statex.dwLength = sizeof(statex);

    GlobalMemoryStatusEx(&statex);

    printf("Используется %*ld %% памяти.\n", WIDTH, statex.dwMemoryLoad);
    printf("Всего        %*I64d KB физической памяти.\n", WIDTH, statex.ullTotalPhys / DIV);
    printf("Свободно     %*I64d KB физической памяти.\n", WIDTH, statex.ullAvailPhys / DIV);
    printf("Всего        %*I64d KB в файле подкачки.\n", WIDTH, statex.ullTotalPageFile / DIV);
    printf("Свободно     %*I64d KB в файле подкачки.\n", WIDTH, statex.ullAvailPageFile / DIV);
    printf("Всего        %*I64d KB виртуальной памяти.\n", WIDTH, statex.ullTotalVirtual / DIV);
    printf("Свободно     %*I64d KB виртуальной памяти.\n", WIDTH, statex.ullAvailVirtual / DIV);

    // Показать количество доступной расширенной памяти.

    printf("Свободно     %*I64d KB расширенной памяти.\n", WIDTH, statex.ullAvailExtendedVirtual / DIV);
}

Cranium, к сожалению не видит библиотеку <windows.h>, но все равно спасибо

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.