- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想象一下,我有一个名为 libcat 的 C 库,用于与我的蓬松猫进行交互。因此,我正在为 OCaml 编写绑定(bind)以简化与 fluffy 的交互。
module type CAT = sig
type cat
val find : ... -> cat
val feed : cat -> unit
...
end ;;
module Cat : CAT = ...
let fluffy = Cat.find ;;
fluffy.yodel ;;
let meow = fluffy ;;
...
meow.feed ;;
type cat_name = real_cat ref
type real_cat
最佳答案
自定义 block 本身,即从caml_alloc_custom
获取的字节, 是 Caml 堆的一部分,可以像任何其他对象一样移动。¹ 自定义 block 包含指向数据结构的指针非常常见,这些数据结构也可由 C² 代码访问并位于 Caml 堆之外; Caml 将自定义 block 的内容视为不透明的,甚至不知道它是否包含指针,因此它不会触及这些数据结构。
当你写 let meow = fluffy
,没有副本发生:你只是给同一个对象一个新名称。 Caml 永远不会复制自定义 block ;如果需要,您必须提供 copy_cat
图书馆中的原始人。
¹
只有次要垃圾收集器和压缩器实际移动 block ,主要 gc 不会。但这不是你应该依赖的东西。
²
或 Fortran,或您的程序或库使用的任何其他语言。
关于memory-management - OCaml 是否曾经复制过自定义 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363597/
当我使用 Google 可视化库创建可视化时,这是一个持续的恶化: 此图的左侧和右侧至少有 75 像素,顶部和底部还有 30-40 像素。馅饼本身没有理由不能更大,当我提供足够的空间时,右边的图例也没
我正在将我的应用程序转移到另一台服务器,但我遇到了一些似乎没有过期的 PHP session 问题。 在 php.ini 中我设置了: session.gc_probability = 1 sessi
关闭。这个问题需要更多 focused 。它目前不接受答案。 想要改进这个问题?更新问题,使其只关注 editing this post 的一个问题。 关闭 9 年前。 Improve this q
有时在项目结束时我会想“哇,我刚刚为那个项目写了很多行代码。”但我永远不知道到底有多少。 有什么方法可以实际列出自创建以来添加到 repo 中的所有代码行吗? 我认为那种东西看起来会很有趣。 编辑:我
我并不完全理解 Apple 的 iOS 4 模型,我已经研究了几个小时的文档,但我仍然感谢一些帮助。 后台 iPhone 应用程序会退出吗?例如,当我关闭 Loopt 等位置跟踪应用程序时,它将进入后
一些背景 我目前正在开发一个移动网站,因此我一直在 Firefox 中使用 User Agent switcher 切换用户代理。 (可爱的插件)。但是当我转到管理站点时,它呈现为 WML ,这让 F
我是一名优秀的程序员,十分优秀!