在Haskell FFI中,分配有withArray
和newArray
的数组之间的本质区别是什么?我在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
分配的内存,例如尝试通过realloc
或free
分配内存?