网上查了下,发现runtime包有这个功能,但是没有导出。Golang 在 C++ 中有类似 memmove 的东西吗?void * memmove ( void * destination, const void * source, size_t num );
3 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
我相信复制是你正在寻找的。
src := []byte("some data")
dst := make([]byte, len(src))
copy(dst, src)
println(string(dst)) // prints 'some data'
HUX布斯
TA贡献1876条经验 获得超6个赞
您可以使用go:linkname编译指令:
//go:noescape
//go:linkname memmove runtime.memmove
func memmove(to, from unsafe.Pointer, n uintptr)
Cats萌萌
TA贡献1805条经验 获得超9个赞
最后,我决定使用Cgo。它可能会通过调用 C 失去类型安全的好处。但我找不到任何原生的 go 代码解决方案。
//#include <string.h>
import "C"
import "unsafe"
func Memmove(src, dest unsafe.Pointer, length int) {
C.memmove(dest, src, C.size_t(length))
}
- 3 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消