请考虑以下示例代码:
package main
/*
#include <stdio.h>
#include <stdlib.h>
*/
import "C"
import (
"fmt"
"runtime"
"unsafe"
)
func main() {
// Convert Go string to C string using C.CString
cString := C.CString("Wold!")
fmt.Printf("C.CString type: %T\n", cString)
//C.free(unsafe.Pointer(cString)) // <-- this works, but I don't want to free it manually..
runtime.SetFinalizer(&cString, func(t *C.Char) {
C.free(unsafe.Pointer(t))
})
}
我正在试验 cGo,并试图释放cString. 当我尝试释放我的变量 cString 时,runtime.SetFinalizer我遇到了:
$ go build a.go
# command-line-arguments
./a.go:22:41: could not determine kind of name for C.Char
请指出正确的方向。谢谢!
精慕HU
相关分类