Получить полную память системы с помощью C - PullRequest
1 голос
/ 08 августа 2011

Я пытаюсь получить полную и, если возможно, свободную память системы на C. Она должна быть независимой от системы.

Чтобы начать обсуждение, я могу предложить метод getpagesize () для получения размера страницы. Любой желающий может помочь с количеством страниц памяти.

Ответы [ 4 ]

5 голосов
/ 08 августа 2011

Нет системно-независимого способа сделать это, потому что он, очевидно, зависит от системы!

3 голосов
/ 08 августа 2011

Нет способа сделать это независимо от системы.Язык не имеет понятия о страницах памяти или о том, где и как он хранится.

2 голосов
/ 08 августа 2011

Мало того, что обработка памяти зависит от системы, как уже говорили другие, во многих случаях такая вещь, как «общий объем памяти», просто не существует в качестве ясного понятия.Существует

  • физическая память, но обычно она не является жестким ограничением, потому что она поддерживается
  • страничной памятью на диске, но какая конфигурация зависит, а какая часто нетжесткое ограничение также из-за виртуальной памяти
  • , которая просто описывает различные «числа», которые могут иметь адреса и которые свободно присваиваются ОС, даже если они не могут быть поддержаны двумя вышеупомянутыми.
1 голос
/ 08 августа 2011

Если под "системно-независимым" вы подразумеваете независимость от ОС, то я действительно сомневаюсь, что вы найдете какую-либо одну команду для работы на всех платформах.

Если вы хотите, чтобы система специфична:

  • В Windows использовать GlobalStatusMemoryEx
  • В Linux я бы, вероятно, выбрал бы быстрый и грязный подход (parsing / proc / meminfo)

Для Linux вы также можете попробовать функцию sysconf в unistd.h

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...