问题描述
我有一个小函数,它将Go字符串数据的指针传递给C(Lua库):
func (L *C.lua_State) pushLString(s string) {
gostr := (*reflect.StringHeader)(unsafe.Pointer(&s))
C.lua_pushlstring(L,(*C.char)(unsafe.Pointer(gostr.Data)),C.ulong(gostr.Len))
// lua_pushlstring copies the given string,not keeping the original pointer.
}
它可以在简单的测试中工作,但是从文档中尚不清楚这是否完全安全。
根据DataFrame.pop
,应该将reflect.StringHeader
的内存固定为 gostr ,但是Stringheader.Data
已经是uintptr
,“没有指针语义的整数值” -这本身很奇怪,因为如果它没有指针语义,那么字段将不会完全无用,因为在读取值后可能会立即移动内存?还是像reflect.Value.Pointer
一样特别对待字段?还是有另一种从字符串获取C指针的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)