go memcpy

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jacke121/article/details/88416455

来源:https://github.com/jsgilmore/shm

callback := syscall.NewCallback(func(r uintptr, size int) (ret uintptr) {

    // 定义一个[]byte切片,用来存储C返回的字符串

    t1 := time.Now() // get current time
    data := make([]byte,size)
    C.memcpy(unsafe.Pointer(&data[0]), unsafe.Pointer(r), C.size_t(size))
package shm

//#include <string.h>
import "C"
import "unsafe"

func memcpy(dest, src []byte) int {
	n := len(src)
	if len(dest) < len(src) {
		n = len(dest)
	}
	if n == 0 {
		return 0
	}
	C.memcpy(unsafe.Pointer(&dest[0]), unsafe.Pointer(&src[0]), C.size_t(n))
	return n
}

func memmove(dest, src []byte) int {
	n := len(src)
	if len(dest) < len(src) {
		n = len(dest)
	}
	if n == 0 {
		return 0
	}
	C.memmove(unsafe.Pointer(&dest[0]), unsafe.Pointer(&src[0]), C.size_t(n))
	return n
}

猜你喜欢

转载自blog.csdn.net/jacke121/article/details/88416455
今日推荐