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, [email protected] 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 [email protected].
For more options, visit https://groups.google.com/d/optout.