ヒープを使ってみる

今回はヒープを用いたメモリ確保を実験してみた。Windows APIによれば、mallocを用いるより少し細かく制御できるようだ。

heap.c

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
	LPVOID p;                                 // ヒープから取得したポインタ
	HANDLE hHeap;                             // ヒープのハンドル
	SIZE_T dwInitialSize = 0xFFFF;            // 初期のヒープサイズ
	SIZE_T dwBytes       = dwInitialSize;     // 割り当てたいバイト数
	SIZE_T dwMaximumSize = 0;                 // 最大ヒープサイズ
	DWORD dwFlags        = HEAP_ZERO_MEMORY;  // ヒープの割り当て方法の制御
	DWORD flOptions      = 0;                 // ヒープ割り当て方法の属性

	// プライベートヒープのハンドルを取得する
	hHeap = HeapCreate(flOptions, dwInitialSize, dwMaximumSize);

	// ヒープを取得する
	p = HeapAlloc(hHeap, dwFlags, dwBytes);

	// ヒープを使ってみる
	memcpy(p, "abcde", sizeof("abcde"));
	printf("%s\n", p);

	// ヒープの解放
	HeapFree(hHeap, 0, p);

	return 0;
}