c - 如何将 Julia 数组推送到 C 中的垃圾收集器?
问题描述
在https://docs.julialang.org/en/stable/manual/embedding/上,它说明了如何在 C 中使用 Julia 数组和垃圾收集器,但没有说明如何一起使用它们。
比方说,我按照示例中的说明按照以下方式分配了一个数组:
jl_value_t* array_type = jl_apply_array_type((jl_value_t*)jl_float64_type, 1);
jl_array_t* x = jl_alloc_array_1d(array_type, 10);
double *xData = (double*)jl_array_data(x);
如果我在下一次调用函数时不使用该数组jl_
,它将被垃圾收集,正如它给我一个垃圾值所证明的那样。如果我 (a) 使用jl_gc_enable(0)
或 (b) 在下一次调用中使用 Julia 中的数组,我没有任何问题。
我可以将数组推送到垃圾收集器,但下面的示例代码对我没有帮助:
jl_value_t **args;
JL_GC_PUSHARGS(args, 2); // args can now hold 2 `jl_value_t*` objects
args[0] = some_value;
args[1] = some_other_value;
// Do something with args (e.g. call jl_... functions)
JL_GC_POP();
这段代码需要一个jl_value_t**
,但我没有这样的数组。我只有array_type
,x
和xData
, 它们都是不同类型的三个。
那么我将如何推动数组以便它不会被垃圾收集呢?
解决方案
推荐阅读
- python - 计算直线和椭圆之间的截点 - python
- python - Scipy 的 misc 字节尺度方法的替代方案
- macos - 使 VoiceOver 宣布 10.9 之前的文本
- python - CoreML - 模型训练时平衡图像数量
- python - 如何使用数据透视表 python 选择前 5 个类别
- node.js - 使用 CosmosDB 的 Mongoose:出现错误“共享吞吐量集合应该有一个分区键”
- javascript - 在 jQuery 中加载时图像没有获得 Div 高度
- android - 如何解决“修复 JavaScript 接口注入漏洞”?
- python - 如何从现有的 Dataframe_old 在 python 中创建 Dataframe_new。
- php - Laravel 在所有视图源中输出源控制器、模型和视图文件路径?