pointersgosystem-callsmmapvirtualalloc

Converting a pointer to a byte slice


The Mmap() syscall in the x/sys/unix package in Golang returns a []byte type, while the underlying syscall actually returns a pointer. How does it do this?

More specifically, in this package by a Golang developer, the VirtualAlloc function simply returns a pointer. How can this be converted to a byte slice, the same way as it's done in the Unix package?


Solution

  • As of Go 1.17, you can now use unsafe.Slice:

    mySlice := unsafe.Slice(ptr, numElements)