在C#中,可以使用stackalloc在堆栈上分配一个项目数组:
DECLARE @StartDate DATETIME2(7) = '2017-11-08 00:00:00.0000000 +00:00'
DECLARE @EndDate DATETIME2(7) = '2017-11-08 00:00:00.0000000 +00:00'
DECLARE @Op INT = 2
DECLARE @name NVARCHAR(25) = 'A'
SELECT
name,
dttm
FROM
tableName
WHERE
dttm BETWEEN @StartDate AND @EndDate
AND CASE @Op
WHEN 1 THEN 1
WHEN 2 THEN name + ' LIKE ' + @name +'%'
END <> 0
有两点需要注意: 1- n似乎不是编译时常量和 2-这产生“localloc”IL指令,其描述为
“从本地动态内存中分配一定数量的字节 pool 并按下该地址(瞬态指针,类型*) 首先将字节分配到评估堆栈。“
问题是,如何在C ++ / CLI代码中实现此效果?
我当然知道如何分配 native 基于堆栈的数组(C和C ++两种类型),但这两者都要求数组大小为编译时常量。我不是100%确定我理解本地动态内存池是什么,但是 我想知道如何从C ++ / CLI生成等效的IL上面引用的C#stackalloc代码。
我的问题与“可能的重复”标记是唯一的,因为我特别询问有关IL目标的C ++ / CLI。我已经知道如何在本机C ++中执行此操作。我问的是我可以在C ++ / CLI中使用什么构造来生成等效于C#stackalloc工具生成的中间语言输出。这不是与标准C ++相关的问题,而特定与C ++ / CLI相关。