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.

Reply via email to