是否有可能在C ++ / CLI中使用类似c#的stackalloc?

时间:2017-12-09 15:16:57

标签: c# .net c++-cli

在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相关。

0 个答案:

没有答案