ヒープを使ってみる
今回はヒープを用いたメモリ確保を実験してみた。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; }