在Haskell FFI中,分配有withArraynewArray的数组之间的本质区别是什么?我在c中具有与newArray一起使用的功能,但与withArray一起使用的段错误。工作代码看起来像这样:

a <- newArray items
fficall a
free a

segfaults的代码如下所示:
withArray items fficall

当ffi进入blas功能时,段错误就会发生。由于不允许我显示c代码,因此问题是,“请给我展示一个示例c函数,该示例也使用withArray而不是newArray进行段故障。”

最佳答案

据我所知,newArray最终调用malloc进行分配,而withArray调用allocaArray,最终以newAlignedPinnedByteArray#进行。

也许您的功能依赖malloc分配的内存,例如尝试通过reallocfree分配内存?

10-08 16:52