On Sunday, May 23, 2021 at 4:51:30 AM UTC-4 [email protected] wrote:
> In the following code, "make([]T, n)" is reported as escaped.
> But does it really always escape at run time?
> Does the report just mean "make([]T, n) possibly escapes to heap"?
>
> package main
>
> type T int
>
> const K = 1<<13
> const N = 1<<12
> var n = N
> var i = n-1
>
> func main() {
> var r = make([]T, N) // make([]T, N) does not escape
> println(r[i])
>
> var r2 = make([]T, n) // make([]T, n) escapes to heap
> println(r2[i])
>
> var r3 = make([]T, K) // make([]T, K) escapes to heap
> println(r3[i])
> }
>
Another question is, why should "make([]T, K)" escape to heap?
Using the capacity as the criterion is not reasonable.
After all arrays with even larger sizes will not allocated on heap.
--
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].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/96efbf2d-b7cf-4325-847d-8e062906dc7dn%40googlegroups.com.