From: Josh Bleecher Snyder Date: Wed, 17 Aug 2016 23:23:40 +0000 (-0700) Subject: unsafe: document use of &^ to round/align pointers X-Git-Tag: go1.8beta1~1792 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=29df4c8f0004aa259093bf8dbf0bf966a392d44d;p=gostls13.git unsafe: document use of &^ to round/align pointers Follow-up to CL 27156 Change-Id: I4f1cfced2dced9c9fc8a05bbc00ec4229e85c5c9 Reviewed-on: https://go-review.googlesource.com/27314 Reviewed-by: Ian Lance Taylor --- diff --git a/src/unsafe/unsafe.go b/src/unsafe/unsafe.go index 8f43e72775..0b59ff204b 100644 --- a/src/unsafe/unsafe.go +++ b/src/unsafe/unsafe.go @@ -76,8 +76,10 @@ type ArbitraryType int // // equivalent to e := unsafe.Pointer(&x[i]) // e := unsafe.Pointer(uintptr(unsafe.Pointer(&x[0])) + i*unsafe.Sizeof(x[0])) // -// It is valid both to add and to subtract offsets from a pointer in this way, -// but the result must continue to point into the original allocated object. +// It is valid both to add and to subtract offsets from a pointer in this way. +// It is also valid to use &^ to round pointers, usually for alignment. +// In all cases, the result must continue to point into the original allocated object. +// // Unlike in C, it is not valid to advance a pointer just beyond the end of // its original allocation: //