首页 > 解决方案 > 如何将 void * 内存从 cgo 复制到切片

问题描述

Go 程序调用了一个 C 库,并获得了一个以 avoid *和它的size.

现在我需要将该内存复制到一个切片中,该怎么做?

func recvData(data unsafe.Pointer, size C.size_t) []byte {
    s := make([]byte, size, size)

    // now copy data into s

    return s
}

我知道通过反射,我可以调用C.memcpycopy datato s.Data,但它似乎效率低下。

有没有更好的办法?

标签: go

解决方案


推荐阅读