メモリをクリーンアップする【Windows API】

メモリの動的確保編も3回目に突入しました。 今回はVirtualAlloc関数を使用してメモリ清掃プログラムを作ってみます。 前世紀の末ごろに「めもりくりーな」というフリーソフトが公開され注目を浴びました。 当時は搭載されているメモリが極めて少なく、画像編集ソフトなどを立ち上げる前にメモリ を確保する必要があったのです。非常に高度なテクノロジーで実装されていると勘違いされ 易いこの技術ですが、実際は巨大なメモリを確保して開放するだけの処理です。巨大なメモリ を確保しようとするとWindowsが既存のメモリデータをハードディスクの仮想メモリに移す処理 を行い、それによって物理メモリ空間が空くというシステムです。現在ではギガクラスのメモリ を搭載することも珍しくなく、この分野のソフトの必要性は失われてしまいましたが、参考程度 にはなるでしょう。

int main(int argc, char* argv[])
{
    char *pszBuff;
    size_t nSize = 1024*1024*512;

    pszBuff = (char *)VirtualAlloc(NULL, nSize, MEM_COMMIT, PAGE_READWRITE);
    FillMemory(pszBuff, nSize, 0);
    VirtualFree(pszBuff, nSize, MEM_DECOMMIT);

    return 0;
}

 

Windows API

Posted by @erestage