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