ヒープメモリを動的に確保する方法【Windows API】

前回に引き続きメモリを動的に確保するための関数について取り扱います。 今回はHeapAlloc関数について使い方を説明します。基本的にGlobalAllocと扱いは 同じと考えて頂いて構いません。 これもまた、自動的に開放処理が行われませんので忘れずに開放してください。

#include <windows.h>

int main(int argc, char* argv[])
{
    HANDLE hHeap;
    char *pszBuff;

    // ヒープを作成する
    hHeap = HeapCreate(NULL, 0, 0);

    // アロケーション処理
    pszBuff = (char*)HeapAlloc(hHeap, HEAP_ZERO_MEMORY, sizeof(char)*15);

    // メモリ操作
    lstrcat(pszBuff, "あいうえお");
    printf("[%s]\n", pszBuff);

    // メモリを再確保する
    pszBuff = (char*)HeapReAlloc(hHeap, NULL, pszBuff, sizeof(char)*30);

    // 追記してみる
    lstrcat(pszBuff, "かきくけこ");
    printf("[%s]\n", pszBuff);

    // ヒープを破棄する
    HeapFree(hHeap, NULL, pszBuff);
    HeapDestroy(hHeap);

    return 0;
}

 

Windows API

Posted by @erestage