mirror of
https://github.com/golang/go
synced 2024-11-12 13:00:57 -07:00
22 lines
328 B
Go
22 lines
328 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"runtime"
|
||
|
"unsafe"
|
||
|
)
|
||
|
|
||
|
func main() {
|
||
|
p := new([1024 * 1000]int)
|
||
|
p[0] = 10
|
||
|
r := bar(&p[1024*1000-1])
|
||
|
fmt.Printf("r value is %d", r)
|
||
|
}
|
||
|
|
||
|
func bar(a *int) int {
|
||
|
p := unsafe.Add(unsafe.Pointer(a), 2*unsafe.Sizeof(int(1)))
|
||
|
runtime.ASanWrite(p, 8) // BOOM
|
||
|
*((*int)(p)) = 10
|
||
|
return *((*int)(p))
|
||
|
}
|