github.com/q45/go@v0.0.0-20151101211701-a4fb8c13db3f/misc/cgo/testsanitizers/msan2.go (about) 1 package main 2 3 /* 4 #include <string.h> 5 #include <stdint.h> 6 #include <stdlib.h> 7 8 void f(int32_t *p, int n) { 9 int32_t * volatile q = (int32_t *)malloc(sizeof(int32_t) * n); 10 memcpy(p, q, n * sizeof(*p)); 11 free(q); 12 } 13 14 void g(int32_t *p, int n) { 15 if (p[4] != 1) { 16 abort(); 17 } 18 } 19 */ 20 import "C" 21 22 import ( 23 "unsafe" 24 ) 25 26 func main() { 27 a := make([]int32, 10) 28 C.f((*C.int32_t)(unsafe.Pointer(&a[0])), C.int(len(a))) 29 a[4] = 1 30 C.g((*C.int32_t)(unsafe.Pointer(&a[0])), C.int(len(a))) 31 }