// サンプル出力:
// c:/>global
// The MemoryStatus structure is 32 bytes long.
// It should be 32.
// 78 percent of memory is in use.
// There are 65076 total Kbytes of physical memory.
// There are 13756 free Kbytes of physical memory.
// There are 150960 total Kbytes of paging file.
// There are 87816 free Kbytes of paging file.
// There are 1fff80 total Kbytes of virtual memory.
// There are 1fe770 free Kbytes of virtual memory.
#include <windows.h>
// 表示単位をキロバイト(KB)からメガバイト(MB)へ変更する場合
#define DIV 1024
// #define DIV 1
char *divisor = "K";
// char *divisor = "";
// この方法を使うと、数値の表示フィールドの幅を簡単に変更
// できる。表示フォーマット指定の "%*ld"
は、引数リスト
// から 1
つの int
を取り出し、この形式に従ってパディング
// (
調整用文字の挿入)と右揃えを行う。
#define WIDTH 7
void main(int argc, char *argv[])
{
MEMORYSTATUS stat;
GlobalMemoryStatus (&stat);
printf ("The MemoryStatus structure is %ld bytes long./n",
stat.dwLength);
printf ("It should be %d./n", sizeof (stat));
printf ("%ld percent of memory is in use./n",
stat.dwMemoryLoad);
printf ("There are %*ld total %sbytes of physical memory./n",
WIDTH, stat.dwTotalPhys/DIV, divisor);
printf ("There are %*ld free %sbytes of physical memory./n",
WIDTH, stat.dwAvailPhys/DIV, divisor);
printf ("There are %*ld total %sbytes of paging file./n",
WIDTH, stat.dwTotalPageFile/DIV, divisor);
printf ("There are %*ld free %sbytes of paging file./n",
WIDTH, stat.dwAvailPageFile/DIV, divisor);
printf ("There are %*lx total %sbytes of virtual memory./n",
WIDTH, stat.dwTotalVirtual/DIV, divisor);
printf ("There are %*lx free %sbytes of virtual memory./n",
WIDTH, stat.dwAvailVirtual/DIV, divisor);
}