uintptr에서 unsafe.Pointer로의 잘못되었을 수 있는 변환을 보고합니다.

포인터 값을 가진 uintptr 타입의 단어는 스택 복사 및 가비지 컬렉터에 표시되지 않기 때문에 이러한 단어가 메모리에 있는 것으로 추정되는 경우, uintptr에서 unsafe.Pointer로의 변환은 올바르지 않습니다.

잘못된 사용 예:

nums := []int8{42, 24}
ptr := unsafe.Pointer(&nums[0])
addr := uintptr(ptr) // 주소가 지역 변수에 저장됨
ptr = unsafe.Pointer(addr + uintptr(1))

올바른 사용의 예:

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