123456789101112131415161718192021 |
- 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))
- }
|