package main /* #include */ import "C" import "unsafe" //export prepareCStringArray func prepareCStringArray(goStrings []string) (**C.char, int) { cStrings := make([]*C.char, len(goStrings)) for i, s := range goStrings { cStrings[i] = C.CString(s) } return (**C.char)(unsafe.Pointer(&cStrings[0])), len(goStrings) } //export freeCStringArray func freeCStringArray(cStrings **C.char, length int) { array := (*[1 << 30]*C.char)(unsafe.Pointer(cStrings))[:length:length] for _, s := range array { C.free(unsafe.Pointer(s)) } }