のMSDNドキュメントからMarshal.AllocHGlobal:
AllocHGlobal は、Marshal クラスの 2 つのメモリ割り当てメソッドの 1 つです。このメソッドは、Kernel32.dll から Win32 LocalAlloc 関数を公開します。
ローカルヒープではなくグローバルヒープにメモリを割り当てる GlobalAlloc API があることを考えると、このメソッドの名前は誤解を招きやすいのではないでしょうか?
AllocHGlobalではなく、名前を付ける理由はありましたAllocHLocalか?
更新: Simon はコメントで、Windows にはグローバル ヒープのようなものはもはや存在せず、APIGlobalAllocとLocalAllocAPI は従来の目的のためだけに残っていると指摘しています。最近では、GlobalAllocAPI は のラッパーにすぎませんLocalAlloc。
これは、API がまったく呼び出さGlobalAllocれない理由を説明していますが、API がAllocHGlobalグローバル ヒープを使用しない (できない) 場合に名前が付けられた理由も説明していませんGlobalAlloc。16 ビットのサポートが廃止された後の .NET 2.0 まで導入されなかったため、この名前付けはおそらく従来の理由によるものではありません。では、疑問が残ります。なぜMarshal.AllocHGlobal、誤解を招く名前が付けられているのでしょうか。