Show/Hide Toolbars

XSharp

使用 STACKALLOC 关键字,可以在当前函数/方法的堆栈中分配一个内存块。

使用 STACKALLOC 的语法是

 

VAR x := StackAlloc <dword>{1,2,3,4,5,6,7,8,9,10}
VAR y := StackAlloc int[]{10}

或更通用的

VAR x := StackAlloc <typed Literal array>
VAR y := StackAlloc <typed array>

 

编译器将生成 "Typed PTR "类型的变量。因此,在第一个示例中,x 将是 DWORD PTR 类型,y 将是 INT PTR 类型。

 

也可以使用普通的 LOCAL 关键字声明变量。在这种情况下,类型必须是 <Type> PTR

 

LOCAL x := StackAlloc <dword>{1,2,3,4,5,6,7,8,9,10} AS DWORD PTR
LOCAL y := StackAlloc INT[]{10} AS INT PTR

 

您也可以在非变量声明的表达式中使用 STACKALLOC。在这种情况下,编译器会将 STACKALLOC 表达式解析为分配 System.Span<T> 类型的对象。这种类型在 .Net Framework 中不可用,只有在 .Net 5 及更高版本中才可用。