Julia 中的指针解引用(unsafe_load(ptr) 有效,但 unsafe_wrap(Array, ptr, 1) 段错误)

2024-04-26

我正在尝试取消引用指针unsafe_load and unsafe_wrap。我发现unsafe_load不过效果很好unsafe_wrap如果取消引用指向可变结构的指针,则会崩溃。玩具示例:

[mutable] struct Wrapper
    data::Int
end

some = Wrapper(1)
ptr = convert(Ptr{Wrapper}, Base.Libc.malloc(sizeof(Wrapper)))
unsafe_store!(ptr, some)

unsafe_load(ptr) # returns Wrapper(1)
unsafe_wrap(Array, ptr, 1) # segfaults if Wrapper is mutable, works fine if not

而我正是需要unsafe_wrap因为它不复制(我需要在分配的地方就地执行一些操作malloc记忆)。为什么会出现段错误?


找到答案here https://discourse.julialang.org/t/advice-on-using-unsafe-wrap-to-view-integers-as-atomic-integers/67918/8

可变结构向量是指针向量,即

mutable struct Wrapper
    data::Int
end

a = Wrapper(1)
b = [a, a]
a.data = 2
b # is now Wrapper[Wrapper(2), Wrapper(2)]

所以内存布局Int and Wrapper不一样。

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

Julia 中的指针解引用(unsafe_load(ptr) 有效,但 unsafe_wrap(Array, ptr, 1) 段错误) 的相关文章

  • C# 指针与 C++ 指针

    我一直在学习编程 并选择 C 和 C 编程作为第一语言 更具体地说 我有一本旧的 C 书 有人好心地借给我 我用它来学习 C 我使用 Visual Studio Express 并使用 C 和 C 编写 我感兴趣的一个领域是直接内存管理的能
  • 当将 void* 转换为任何内容时,我应该使用 static_cast 还是 reinterpret_cast

    Both static cast and reinterpret cast似乎适合铸造void 到另一个指针类型 是否有充分的理由偏爱其中之一 Use static cast 这是最精确的转换 准确地描述了此处进行的转换 有一个误解 认为使
  • 数组如何在结构体中工作?

    如果我有例如 typedef struct node int numbers 5 node 每当我创建这样一个结构的实例时 都会在堆栈中为数组本身分配内存 在我们的例子中 20 个字节分配 5 个整数 将整数视为 32 位 并且数字将是指向
  • c 中的指针、双指针和三重指针[重复]

    这个问题在这里已经有答案了 可能的重复 有人可以告诉我给定代码中第二个 printf 语句中的引用流吗 https stackoverflow com questions 4638527 can someone tell me the fl
  • @distributed 似乎有效,函数返回很不稳定

    我正在学习如何在 Julia 中进行并行计算 我在用着 sync distributed在 3x 嵌套的开始处for循环并行化事物 参见底部的代码 从线路上看println errCmp row col 我可以观察数组的所有元素errCmp
  • Java 中的 For-Each 和指针 [重复]

    这个问题在这里已经有答案了 好的 所以我尝试迭代 ArrayList 并删除特定元素 但是 我在使用 For Each 之类的结构时遇到了一些麻烦 当我运行以下代码时 ArrayList
  • C++中如何判断传入的缓冲区是否有效?

    在我的函数中 内存指针及其大小作为参数传递 int myFun uintptr t mem ptr int mem size Code here 有没有办法判断这块内存是否真的有效 操作系统是 CentOS Linux 版本 7 9 200
  • 从 Julia 中的文本文件读取数据矩阵

    我有一个包含矩阵的文本文件 我想在朱莉娅中将其作为矩阵来阅读 文本文件如下 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 0 在 matlab 中 您可以执行以下操作来创建矩阵M
  • 为什么我能够使用无效的类指针进行函数调用

    在下面的代码片段中 虽然指针未初始化 但调用仍然成功 temp ptr ptr gt func2 是C 语言特性的问题 还是VC 6编译器的作弊 class temp public temp a 9 int func1 return a b
  • 指针问题! (安卓)

    我在 onTouch 方法中遇到多个指针的问题 所有指针都与一个布尔值相关联 如果向下则为 true 如果向上则为 false 非常重要的是 如果一个指针从 true 变为 false 它不会影响其他布尔值 我遇到的问题是 例如 当指针 1
  • 指向数组的指针 int (*ptr)[]

    我想了解指向数组的指针如何工作 代码片段 include
  • 字符串文字在内存中的什么位置?堆栈/堆? [复制]

    这个问题在这里已经有答案了 可能的重复 C 字符串文字 它们去了哪里 https stackoverflow com questions 2589949 c string literals where do they go 据我所知 一般来
  • 字符串数组初始化

    这是另一个的延续question https stackoverflow com questions 7834294 string array conversion I have 考虑以下代码 char hi hello char arra
  • C 在函数中返回数组

    我对 C 比较陌生 我习惯用 Java 编程 所以我发现 C 在涉及数组的方面有点困难 我仍然对这些案例感到困惑 int a int a int a 在java中 我会做这样的事情来在函数中返回一个数组 int returnArr int
  • 在C++中初始化静态指针

    我有一个带有静态成员的类 它是一个指针 如下所示 动画 h class Animation public Animation static QString m 动画 cpp include animation h QString Anima
  • 在 C# 中通过 C DLL 使用数组和指针

    我对 C 非常陌生 上周才开始学习 我有一个用 C 编写的自定义 DLL 具有以下函数 DLLIMPORT void test function double test 我想要做的是从 C 获取数组 test 的指针 因此 如果在 DLL
  • 为什么 Julia 中的“where”语法对换行符敏感?

    在 Stack Overflow 上的另一个问题中 答案包括以下函数 julia gt function nzcols b SubArray T 2 P Tuple UnitRange Int64 UnitRange Int64 where
  • 指向C中单链表指针的指针[重复]

    这个问题在这里已经有答案了 我有一个关于 C 中的单链表的问题 我用下面所示的代码创建了一个链表 include
  • 防止从 false 到指针的静默转换

    我有一个函数 void foo int bar 如果我像这样调用 foo Visual Studio 2012 现在将顺利编译且不会出现警告 int main foo false return 0 但是 如果我将 foo false 更改为
  • static_cast 和对指针的引用

    谁能告诉我为什么这不能编译 struct A struct B public A int main B b A a b B b1 static cast

随机推荐

  • 设计评论表

    基本上我想创建一个评论系统 其中评论可能有也是评论的父母 但我也希望他们可能有可能是其他东西的父母 例如用户或产品 即 我希望能够对产品发表评论 用户 其他评论或几乎任何资源 我该怎么做呢 当前表 标签 产品 用户 评论 编辑 这将适用于流
  • jQuery 获取容器的 html,包括容器本身

    我如何获取 container 上的 html 包括 container 而不仅仅是其中的内容 div div test 1 div div test 2 div div test 3 div div test 4 div div 我有这个
  • 多个 Docker 容器和 Celery

    我们现在的项目结构如下 处理来自客户端的传入请求的 Web 服务器 向用户提供一些建议的分析模块 我们决定保持这些模块完全独立 并将它们移动到不同的 docker 容器中 当用户的查询到达网络服务器时 它会向分析模块发送另一个查询以获取推荐
  • 如果我们不需要位图,是否必须显式回收它?

    位图有一个recycle方法 但是如果我们不再需要它 是否必须显式调用它 例如 一个ImageView现在有一个位图 当用户单击按钮时 它将为 ImageView 设置一个新的位图 在分配新位图之前我们是否必须回收原始位图 是的 如果您的目
  • 如何在ggplot的facet_grid函数中应用下标

    我想使用 ggplot 绘制空气污染物与出生体重变化之间的关联结果 95 CI 我的数据格式是这样的 variable exposure period coef coef lb coef ub PM10 entire pregnancy 2
  • 如何从在 Cron 作业上运行的 Python 解锁 Gnome 密钥环?

    我正在连接一个 Python 脚本来与 cron 一起运行 在 Ubuntu 12 04 上 但身份验证不起作用 cron 脚本访问几个服务 并且必须提供凭据 存储这些凭证keyring很简单 只不过当 cron 作业实际运行时 无法检索凭
  • Map:如何获取与某个值关联的所有键?

    给定一个 Map 如何查找与特定值关联的所有键 例如 Map
  • 背包多重约束

    我有一个动态规划问题 我花了几个小时研究但没有结果 第一部分很简单 你有一背包物品 你必须最大化这些物品的价值 同时将它们保持在一定的重量以下 问题的第二部分是相同的 只是现在也有一个项目限制 例如 您可以放入袋子中的物品的最大价值是多少
  • 查看 PHP 闭包的源代码

    是否可以反映或以其他方式查看 PHP 闭包对象的源代码 也就是说 如果我做这样的事情 closure function return Hi There 然后是这样的 var dump closure PHP 输出 object Closur
  • 是否可以在activerecord中定义与SQL表达式对应的虚拟属性?

    我正在寻找类似虚拟属性的东西 但这可以在数据库级别上工作 假设我有一个字段age我想添加一个 虚拟字段 age quintile这等于age 5 但可以这样说 Person select age quintile agv height gr
  • Python 元组作为键慢吗?

    我正在尝试实现字典中排序元组的快速查找 回答 元组 3 8 是否有关联值 如果有 它是什么 的问题 令元组中的整数从下方以 0 为界 从上方以 max int 为界 我继续使用 Python 的 dict 但发现速度相当慢 解决此问题的另一
  • 获取以 UTC 表示的当前时间的最简单 PowerShell 方法

    我已查看该帖子在 PowerShell 中创建具有特定 UTC 日期时间的 DateTime 对象 https stackoverflow com questions 10487011 creating a datetime object
  • 非活动状态下的 Spring Boot 堆使用情况

    我在本地部署了一个非常简单的 spring boot 应用程序 它只有一个类 控制器 差不多就这样了 我注意到堆分配并不稳定 并且有峰值和突然下降 为什么会这样 我没有对应用程序进行过一次调用 A view from VisualVM 事实
  • 释放指针向量,但内存仍在使用中

    我不知道下面的代码有什么问题 我正在删除所有指针 但是当我使用 top 命令查看内存时 我可以看到仍然有大量内存分配给程序 我在这里缺少一些东西来释放内存吗 include
  • 重新加载 tslib 触摸屏校准

    背景 我正在开发一个基于 Qt 的大型 GUI 它处理与触摸屏的所有用户交互 该程序的设计使得用户不需要访问命令提示符即可执行任何操作 包括重新校准触摸屏 我写了一个 tslib 的模仿品ts calibrate作为运行的实用程序QWidg
  • 触发 Outlook 事件:更改签名

    有谁知道是否可以在 Outlook 2016 中触发签名更改事件 IE 模拟点击签名 如下图所示 我正在尝试根据选择的 发件人 地址自动更改签名 我可以捕获 发件人 地址更改 如所回答here https stackoverflow com
  • Android 布局:运行第二次布局

    我正在扩展 TextView 并加载自定义字体 我在列表视图中使用这个自定义文本视图 当我滚动列表时 有时会收到以下调试消息 布局期间 com sample CustomTextView 52afae4c V ED ID 0 27 27 4
  • 在 R 中使用 tcltk 在弹出窗口(表格小部件)中显示数据 - 为什么它会删除最后一行数据?

    我正在努力创建一个小部件来使用 tcl tk 在弹出窗口中查看表格 我正在遵循这个例子 http r 789695 n4 nabble com Tck tk help td1837711 html http r 789695 n4 nabb
  • Laravel 中的下拉选择表单

    我可以知道我的代码有什么问题吗 我在数据库中注册了三个用户类型名称 但是我的代码将导致三个下拉菜单 每个菜单上都有单独的用户类型名称 foreach user types as usertype div class form group F
  • Julia 中的指针解引用(unsafe_load(ptr) 有效,但 unsafe_wrap(Array, ptr, 1) 段错误)

    我正在尝试取消引用指针unsafe load and unsafe wrap 我发现unsafe load不过效果很好unsafe wrap如果取消引用指向可变结构的指针 则会崩溃 玩具示例 mutable struct Wrapper d