私はシステムソフトウェアの教員です。今私はWindows用のメモリマネージャを開発しています。それが正常に動作しますメモリ管理の目的で複数のヒープを使用する利点はありますか?
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;
}
:ここmalloc()
とfree()
の私の単純な実装です。しかし、私は複数のヒープを使用する理由は理解できませんか?さて、ヒープにメモリを割り当て、割り当てられたメモリチャンクにアドレスを取得できます。しかしここで私はONEヒープを使用します。複数のヒープを使用する理由はありますか?多分マルチスレッド/マルチプロセスアプリケーションのために?説明してください。
あなたの実装であれば、なぜ3を作成したのか分かりませんか? –
私はただ何かを試しました。それはいくつかの問題を引き起こしますか? – Netherwire
はい、私の答えを見てください。 C++ではなくCを使用していますので、デストラクタが呼び出されていることを確認する必要があります。 –