Is the KeepAlive call in the following example essential? and sufficient? func ByteSlice2String(bs []byte) (str string) { sliceHdr := (*reflect.SliceHeader)(unsafe.Pointer(&bs)) strHdr := (*reflect.StringHeader)(unsafe.Pointer(&str)) strHdr.Len = sliceHdr.Len strHdr.Data = sliceHdr.Data runtime.KeepAlive(&bs) // is this line essential? is it sufficient? return }
On Thursday, March 1, 2018 at 11:29:50 AM UTC-5, di...@veryhaha.com wrote: > > For example, > > func f(s []byte) { > > // Will the the KeepAlive call make sure the underlying bytes > // of s will not garbage collected for sure? > > runtime.KeepAlive(&s) > } > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.