/
/
opt
/
golang
/
1.22.0
/
test
/
uintptrescapes.dir
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.52
PHP 8.3.16
Dir:
/opt/golang/1.22.0/test/uintptrescapes.dir
Edit:
/opt/golang/1.22.0/test/uintptrescapes.dir/main.go
// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "fmt" "os" "sync" "unsafe" "./a" ) func F1() int { var buf [1024]int a.F1(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } func F2() int { var buf [1024]int a.F2(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } var t = a.GetT() func M1() int { var buf [1024]int t.M1(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } func M2() int { var buf [1024]int t.M2(uintptr(unsafe.Pointer(&buf[0]))) return buf[0] } func main() { // Use different goroutines to force stack growth. var wg sync.WaitGroup wg.Add(4) c := make(chan bool, 4) go func() { defer wg.Done() b := F1() if b != 42 { fmt.Printf("F1: got %d, expected 42\n", b) c <- false } }() go func() { defer wg.Done() b := F2() if b != 42 { fmt.Printf("F2: got %d, expected 42\n", b) c <- false } }() go func() { defer wg.Done() b := M1() if b != 42 { fmt.Printf("M1: got %d, expected 42\n", b) c <- false } }() go func() { defer wg.Done() b := M2() if b != 42 { fmt.Printf("M2: got %d, expected 42\n", b) c <- false } }() wg.Wait() select { case <-c: os.Exit(1) default: } }
Ukuran: 1.3 KB