ocaml - 取消分配大数组
问题描述
我很好奇是否有办法在 OCaml 中删除和取消分配某些内容。例如,假设我有一个使用以下方法初始化的数组:
let a = Array.make 10000 0;;
我如何“删除” a
?
提前致谢。
解决方案
简短的回答是当值不再被访问时,它们被删除(由垃圾收集器)。
如果这个定义a
是一个全局定义,它总是可以访问的。因此它永远不会被删除。
相反,如果这是函数中的本地定义,它将在函数返回时被删除(或者如果最后一个引用在函数结束之前可能会更早)。
一般来说,不可变的全局值永远不会被垃圾收集。如果你想要这个,你可以使用一个可变的全局值:
let a = ref (Array.make 10000 0)
当您不再需要时a
,您可以这样做:
a := [| |]
推荐阅读
- hyperlink - 如何制作像 foo:{somedata} 这样的链接
- javascript - 单击类别按钮 Laravel 后,数据库产品未出现在我的页面中
- javascript - 使用Angular重定向到html中的另一个页面
- javascript - Vue 3 vue-cli,如何为 css/js 使用 CDN url?
- apache-beam - 根据偏移量或偏移量时间戳停止从 Kafka 消费的 Beam 管道
- json - 从 VUE 中的本地 json-server 检索数据
- javascript - Javascript函数返回错误的计算值
- rust - 递归构建迭代器会导致“递归不透明类型”错误
- pygame - Python 3.9.6 屏幕不会显示颜色
- html - (HTML & CSS) 我正在尝试在图像之间添加圆圈,但它们不会垂直居中