github.com/secoba/wails/v2@v2.6.4/internal/frontend/desktop/linux/calloc.go (about) 1 //go:build linux 2 // +build linux 3 4 package linux 5 6 /* 7 #include <stdlib.h> 8 */ 9 import "C" 10 import "unsafe" 11 12 // Calloc handles alloc/dealloc of C data 13 type Calloc struct { 14 pool []unsafe.Pointer 15 } 16 17 // NewCalloc creates a new allocator 18 func NewCalloc() Calloc { 19 return Calloc{} 20 } 21 22 // String creates a new C string and retains a reference to it 23 func (c Calloc) String(in string) *C.char { 24 result := C.CString(in) 25 c.pool = append(c.pool, unsafe.Pointer(result)) 26 return result 27 } 28 29 // Free frees all allocated C memory 30 func (c Calloc) Free() { 31 for _, str := range c.pool { 32 C.free(str) 33 } 34 c.pool = []unsafe.Pointer{} 35 }