更新:2007 年 11 月
从本地动态内存池分配特定数目的字节并将第一个分配的字节的地址(瞬态指针,* 类型)推送到计算堆栈上。
Public Shared ReadOnly Localloc As OpCode
Dim value As OpCode value = OpCodes.Localloc
public static readonly OpCode Localloc
public: static initonly OpCode Localloc
public static final OpCode Localloc
public static final var Localloc : OpCode
下表列出了指令的十六进制和 Microsoft 中间语言 (MSIL) 汇编格式,以及简短的参考摘要:
格式
汇编格式
说明
FE 0F
localloc
从本地堆分配空间。
堆栈转换行为依次为:
将要被分配的字节数推送到堆栈上。
从堆栈中弹出字节数;从本地堆分配与该大小相对应的内存量。
将指向所分配的内存的第一个字节的指针推送到堆栈上。
localloc 指令从本地动态内存池分配 size(natural unsigned int 类型)字节并返回第一个已分配字节的地址(瞬态指针,* 类型)。只有在方法上的初始化标志为 true 时才将返回的内存块初始化为 0。在当前方法执行 Ret 时,本地内存池可供重复使用。
结果地址被对齐,以便可以使用 stind 指令(例如 Stind_I4)在那里存储任何基元数据类型和使用 ldind 指令(例如 Ldind_I4)加载任何基元数据类型。
localloc 指令不能在 filter、catch、finally 或 fault 块内发生。
如果内存不足以满足请求的需要,则引发 StackOverflowException。
下面的 Emit 方法重载可以使用 localloc 操作码:
ILGenerator.Emit(OpCode)
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98