结构构造函数中的 f# NativePtr.stackalloc

2023-12-08

我正在进行一些 F# 性能测试,并尝试在堆栈上而不是堆上创建一个数组(值与引用类型)。我正在使用 NativePtr.stackalloc 在堆栈上分配内存。在下面的第一个构造函数中出现错误。

type StackArray<'T when 'T : unmanaged> =
    struct
        val pointer: nativeptr<'T>

        new(x) = { pointer = NativePtr.stackalloc x}
        new(pointer) = { pointer = pointer}
    end    

// This give a System.TypeInitializationException with internal System.InvalidProgramException   
let ints2 = new StackArray<int>(10) 

// This works fine
let (pointer:nativeptr<int>) = NativePtr.stackalloc 10
let ints = new StackArray<int>(pointer) 

我可以简单地在函数中使用第二种方法,但是为什么我无法在构造函数内分配内存,这真的很困扰我。


如果您在函数中使用 stackalloc 进行分配,一旦返回,分配的堆栈空间必须被释放(否则您将没有堆栈)

我本以为错误会在使用该对象时发生,但立即出现错误并不完全令人惊讶

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构构造函数中的 f# NativePtr.stackalloc 的相关文章

  • 将数组分配给结构体中的数组

    我正在尝试将一个数组分配给 typedef 结构的一个字段 但实际上找不到一种方法 我已经搜索过这个问题 但我似乎找到的只是 char 数组的答案 这不是我正在寻找的 我只是试图将一个数组分配给一个 int 数组 并寻找一种实用的方法下面的
  • 与可变结构相比,不可变结构有哪些优点?

    我已经知道不变性相对于可变性的好处在于能够推理代码并引入更少的错误 尤其是在多线程代码中 不过 在创建结构时 我看不出创建一个完全不可变的结构比创建一个可变的结构有任何好处 让我们以保存一些分数的结构为例 struct ScoreKeepe
  • 如何可视化内存中带有位域的 C 结构体的布局?

    我正在使用包括位字段的 C 结构 如下所示 struct beeper general t uint1 t enable 1 uint32 t 7 enum2 t loudness 2 uint32 t 22 enum2 t status
  • 如何解决“程序主模块为空:运行时不会发生任何事情”

    我在 F 解决方案中有两个项目 1 主要项目有 EntryPoint http msdn microsoft com en us library dd402151 aspx并设置为启动项目 2 support 第二个项目 拥有一组支持模块
  • 何时在 F# 中使用区分联合与记录类型

    在继续讨论复杂的示例之前 我试图先弄清楚 F 的基础知识 我正在学习的材料介绍了区分联合和记录类型 我已经审阅了两者的材料 但我仍然不清楚为什么我们要使用其中之一而不是另一个 我创建的大多数玩具示例似乎都可以在两者中实现 记录似乎非常接近我
  • C 标准中 char 数组结构成员的对齐

    假设我想读 写 tar 文件头 考虑标准 C C89 C99 或 C11 关于填充 字符数组在结构中是否有任何特殊处理 编译器可以向这样的结构添加填充吗 struct header char name 100 char mode 8 cha
  • 按属性值选择 XML 节点

  • 如何在 F# 中捕获任何异常(System.Exception)而不发出警告?

    我试图捕获异常 但编译器给出警告 此类型测试或向下转型将始终保持 let testFail try printfn Ready for failing failwith Fails with System ArgumentException
  • 在 C 中使用另一个结构中的二维结构数组的编码问题

    我正在使用一个二维结构数组 它是另一个结构的一部分 这不是我做过很多事的事情 所以我遇到了问题 该函数在接近末尾的 测试 for 循环后最终失败 它在出现段错误之前正确打印出一行 我的代码中将数据读入虚拟二维结构数组的部分工作得很好 所以它
  • f# 运行总计序列

    好吧 这看起来应该很容易 但我就是不明白 如果我有一个数字序列 如何生成由运行总计组成的新序列 例如 对于序列 1 2 3 4 我想将其映射到 1 3 6 10 以适当的功能方式 Use List scan https msdn micro
  • F# 编码练习

    我一直在 Visual Studio 2010 中涉足 F 我是一名在 C 和 Java 等面向对象语言方面拥有更多代码 架构设计经验的开发人员 为了扩展我的技能并帮助做出更好的决策 我正在尝试使用不同的语言来做不同的事情 特别是掌握使用函
  • GLSL 中的二阶函数?

    我正在寻找一种方法来使用一个函数作为 GLSL 中另一个函数的参数 在常规 C 中 可以通过传递函数指针作为函数参数来模拟它 似乎其他语言 如 HLSL 现在提供了处理高级构造 如高阶函数 的方法 或者可以使用以下命令来模拟它们巧妙利用 H
  • 如果仅使用第一个元素,是否必须为整个结构分配内存?

    我有一个结构 其中第一个元素被测试 并且根据其值 结构的其余部分将被读取或不会被读取 在第一个元素的值指示结构的其余部分不会被读取的情况下 我是否必须为整个结构或仅第一个元素分配足够的内存 struct element int x int
  • 从 C# 调用高阶 F# 函数

    给定 F 高阶函数 在参数中采用函数 let ApplyOn2 f int gt int f 2 和 C 函数 public static int Increment int a return a 我怎么打电话ApplyOn2 with I
  • 将 C# 代码转换为 F#(if 语句)

    我想知道如何转换此代码逐行从 C 到 F 我不想使用任何类型的 F 习惯用法或类似的东西 我想了解如何直接映射C 的构造到 F 这是 C 代码 requires l Length gt 0 int GetMinimumValue List
  • 从 F# 调用 Newtonsoft.Json 出现意外结果

    我没有从该 F 代码中获得预期结果 我希望 t 包含调用 JsonSchema Parse json 的结果 但它是空的 我究竟做错了什么 open Newtonsoft Json open Newtonsoft Json Schema l
  • 以类型化内存视图作为成员的结构定义

    目前我正在尝试让一个具有类型化内存视图的结构能够工作 例如 ctypedef struct node unsigned int inds 如果 inds 不是内存视图 据我所知 它可以完美地工作 然而 通过内存视图并使用类似的东西 def
  • C 中使用指针的结构冒泡排序

    我想使用 C 中的冒泡排序算法和指针对结构数组进行排序 我有一个汽车结构 typedef struct char model 30 int hp int price cars 我为 12 个项目分配内存 cars pointer cars
  • 何时评估 F# 函数调用;懒惰地还是立即地?

    F 中的柯里化函数 我知道传入参数子集会产生一个带有预设的函数 我只是想知道传递所有参数是否有什么不同 例如 let addTwo x y x y let incr a addTwo 1 let added addTwo 2 2 incr是
  • 如何使 FSI 在 NET5 下工作并让愚蠢的 stackoverflow 消息“标题不能包含...”闭嘴?

    我正在将一个相当小的 F 项目从 Net Framework 迁移到 NET5 迁移非常简单 一切正常 包括测试 但是 当我运行一些脚本时 我现在收到以下错误 Microsoft R F Interactive version 11 0 0

随机推荐

  • 从 Facebook 页面获取事件

    所以我需要获取 Facebook 页面的事件 如果可能的话 采用 JSON 格式 我正在使用 iOS 我知道如何在获取数据后实现它 但我只是不知道如何从 facebook 获取实际数据 我已经尝试过图形 API 但它需要访问令牌才能执行我想
  • 如何可靠地保护公共 JSONP 请求?

    我正在尝试寻找是否有一种好方法可以防止嵌入在客户网站上的 javascript 小部件上发生 CSRF 该小部件将使最终用户能够通过 JSONP 向 PHP 服务器发出针对我们客户帐户的请求 该服务器将这些请求代理到我们的 非公开 API
  • 字段集之间的验证

    我正在使用带有低音验证的 formtowizard jquery 插件 我已将下一个按钮附加到一个单击事件 该事件验证我的表单 但我只希望它验证当前字段集而不是整个表单 我的表格是这样设置的
  • Java:为什么我们需要转换浮点数而不是双精度数?

    我不知道你是否认为这是一个重要的问题 但我想知道 float 是浮点数 4 个字节 double 是浮点数 8 个字节 为什么我们定义 double 而不进行强制转换 double d 2 1 但我们需要用浮动来投射 float f flo
  • 如何将 Keras ImageDataGenerator 转换为 Numpy 数组?

    我正在研究 CNN 模型 我很好奇如何将 datagen flow from directory 给出的输出转换为凹凸数组 datagen flow from directory 的格式是目录迭代器 除了 ImageDataGenerato
  • 如何从 Lambda 表达式获取值?

    我正在 python 中试验 z3 我有以下模型 set option produce models true set logic QF AUFBV declare fun a Array BitVec 32 BitVec 8 declar
  • 将标记放置在具有特定距离的折线上

    我使用谷歌地图 api v3 制作了谷歌地图 并在地图上放置了一条折线 这是我的地图代码 function initialize var myLatLng new google maps LatLng 31 77577 72 26588 v
  • 如何在Android studio中打开GitHub上的项目? Maven 和 android 支持库存在问题。

    我开始使用 Android Studio 我想从 GitHub 打开项目https github com TonicArtos StickyGridHeaders 在第一个屏幕上 我单击 从版本控制中签出 GitHub 选择磁盘上的位置 克
  • 如果使用了 waitFor,为什么杀死 JVM 也会终止其子进程?

    If waitFor不使用时 杀死JVM对其子进程没有影响 这是一个例子 重击脚本 usr bin env bash echo Sleeping gt log sleep 30 echo Wake up gt gt log Java代码 p
  • Scenekit 检测用户点击的对象

    我最近开始在 iOS 8 中使用 scenekit 作为 scenekit 我在检测用户是否点击或按下了对象时遇到了困难 有什么办法可以做到这一点吗 请参阅文档hitTest方法 从您处理触摸事件的任何地方调用它 以获取 2D 屏幕点 下方
  • Aurelia 选择不起作用

    我有以下问题 我试图通过读取 json 文件来填充一个简单的选择 然后将任何对象的标题显示为选择内的选项 当我尝试在 div 元素内显示标题时 代码工作得很好 但不能作为选择 这是我的代码 import inject from aureli
  • 如果我有 t 统计量和 d.f,如何计算 p 值(在 Perl 中)?

    我编写了一个 Perl 脚本来执行许多单样本 t 检验 我获得了数千个 t 统计量及其自由度 df 我需要升级脚本以返回它们的 p 值 p 值太多 无法在表中手动查找 是否可以使用某种公式以 t 统计量和 d f 作为输入 我希望有人可以帮
  • 增加 WCF 服务中的超时值

    如何将 WCF 服务的默认超时设置为大于 1 分钟 你指的是服务器端还是客户端 对于客户 您需要调整发送超时绑定元素的属性 对于服务 您需要调整接收超时绑定元素的属性
  • 如何将 python 子进程 stderr 和 stdout 重定向到多个文件? [复制]

    这个问题在这里已经有答案了 我只想将 stderr 和 stdout 重定向到多个文件 例如 stderr 应重定向到 file 1 和 file 2 我使用下面的方法将输出重定向到单个文件 subprocess Popen my comm
  • Yeoman 出现“无法启动 Chrome”错误

    我正在尝试开始使用 Yeoman 看起来确实很棒 但尝试运行时出现错误grunt test命令 Running karma unit karma task INFO karma Karma server started at http lo
  • Android:如果屏幕锁定或在后台,C++ 线程不会唤醒。使用应用程序时工作正常

    在我们的 Android 应用程序中 我们有 UI 组件和核心 C 11 模块 线程的运行基于std chrono system clock time point 如下所示 while this gt m ConditionVariable
  • 在 C 中分配二维数组

    我想在运行时在 C 中分配一个二维数组 现在这可以通过传统的方式来实现 如下所示 int matrix rows for row 0 row lt rows row matrix row int malloc ncol sizeof int
  • 如何在flutter中将图像转换为base64图像?

    我实际上正在尝试转换由ImagePicker扑向base64图像 我总是收到错误 FileSystemException Cannot open file path file storage emulated 0 Download Abid
  • 如何在 ruby​​ 中引用子模块的“完整路径”?

    在我的应用程序中 我有 VeryUniqueModule Foo and VeryUniqueModule Bar Foo and Bar每个都用于不同的服务 我的应用程序的一部分必须动态地找出要引用的模块 它能够做到这一点 如下所示 de
  • 结构构造函数中的 f# NativePtr.stackalloc

    我正在进行一些 F 性能测试 并尝试在堆栈上而不是堆上创建一个数组 值与引用类型 我正在使用 NativePtr stackalloc 在堆栈上分配内存 在下面的第一个构造函数中出现错误 type StackArray lt T when