一尘不染

将指针转换为字节片

go

Mmap()在系统调用x/sys/unix
在Golang返回[]byte类型,而底层系统调用实际上返回一个指针。它是如何做到的?

更具体地说,在Golang开发人员的程序包中,该VirtualAlloc函数仅返回一个指针。如何将其转换为字节片,就像在Unix软件包中一样?


阅读 165

收藏
2020-07-02

共1个答案

一尘不染

使用该unsafe包,您可以golang.org/x/sys/unix在未导出类型的Mmap方法中执行相同的操作mmapper

// Slice memory layout
var sl = struct {
    addr uintptr
    len  int
    cap  int
}{addr, length, length}

// Use unsafe to turn sl into a []byte.
b := *(*[]byte)(unsafe.Pointer(&sl))

这是一个操场的例子

2020-07-02