30.Marshal.AllocHGlobal C#例子
Marshal.AllocHGlobal
这个代码为IntPtr分配非托管内存。当访问非托管代码时有时候会需要一个指向非托管内存的指针。因此需要对IntPtr分配非托管内存。分配的大小可以是8个字节。不够可以写更大。
用完要用Free释放内存,否则这个非托管内存不会被C#自动释放。
using System;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
IntPtr intptrs;
intptrs=Marshal.AllocHGlobal(8);
Marshal.FreeHGlobal(intptrs);
}
}
“Alloc”是“allocate”的缩写,意为“分配”。在编程和计算机科学中,分配通常指的是为变量、对象或数据结构在内存中预留空间。
“H”可能代表“Heap”,即堆内存。在操作系统和内存管理中,堆是一种用于动态分配内存的区域。然而,在这个上下文中,“H”更可能是为了与“Global”形成一个有意义的缩写或标识,而不是直接代表“Heap”。
“Global”指的是全局的,或非托管的内存区域。在.NET环境中,内存被分为托管内存和非托管内存。托管内存由.NET运行时自动管理,而非托管内存则需要程序员手动管理。