这是我正在尝试做的事情:
(defun do-some-fun-stuff (string-list)
(let ((n (length string-list)))
(cffi:with-foreign-object (array :string n)
(loop for i below n
for s in string-list
do (setf (cffi:mem-aref array :string i) s))
(call-some-foreign-function n array))))
我知道它array
本身会在离开with-...
块时被释放,但是数组的元素呢?该(setf (cffi:mem-aref array :string i) s)
表达式将为每个元素分配一个以 null 结尾的 char* 数组,对吗?我应该自己释放它们还是 CFFI 会为我这样做?我在文档和 CFFI 代码中都找不到明确的答案。