Inspectopedia Help

Invalid conversions of 'uintptr' to 'unsafe.Pointer'

Reports possibly incorrect conversions of uintptr to unsafe.Pointer.

A conversion from uintptr to unsafe.Pointer is invalid if it implies that there is a uintptr-typed word in memory that holds a pointer value, because that word will be invisible to stack copying and to the garbage collector.

Example of invalid usage:

nums := []int8{42, 24} ptr := unsafe.Pointer(&nums[0]) addr := uintptr(ptr) // address is stored to a local variable ptr = unsafe.Pointer(addr + uintptr(1))

Example of valid usage:

nums := []int8{42, 24} ptr := unsafe.Pointer(&nums[0]) ptr = unsafe.Pointer(uintptr(ptr) + uintptr(1))

Inspection Details

Available in:

GoLand 2023.3

Plugin:

Go, 233.SNAPSHOT

Last modified: 13 July 2023