私はシステムソフトウェア学部の学生です。現在、Windows 用のメモリ マネージャーを開発しています。malloc()
これがandの私の簡単な実装ですfree()
:
HANDLE heap = HeapCreate(0, 0, 0);
void* hmalloc(size_t size)
{
return HeapAlloc(heap, 0, size);
}
void hfree(void* memory)
{
HeapFree(heap, 0, memory);
}
int main()
{
int* ptr1 = (int*)hmalloc(100*sizeof(int));
int* ptr2 = (int*)hmalloc(100*sizeof(int));
int* ptr3 = (int*)hmalloc(100*sizeof(int));
hfree(ptr2);
hfree(ptr3);
hfree(ptr1);
return 0;
}
それは正常に動作します。しかし、複数のヒープを使用する理由があるのか わかりませんか? さて、ヒープにメモリを割り当てて、割り当てられたメモリ チャンクのアドレスを取得できます。しかし、ここでは 1 つのヒープを使用します。複数のヒープを使用する理由はありますか? 多分マルチスレッド/マルチプロセスアプリケーション用ですか? 説明してください。