关于到达1024后,扩容就改为25%,这个1024指什么?

来源:4-3 数组,字符串,切片底层是一样的吗?(二)

刘三月

2022-07-23

请问老师,这个扩容的时候判断扩容多少,1024是不是只表示数组的长度,也就是可容纳元素的数量。具体扩容后占的内存大小,要取决于切片内部的数据类型。我理解的对吗?

(一开始有点疑惑1024是指字节还是什么,听到后面您在13:35左右说256个字节,我以为是字节,但是看到源码又是直接取的cap去做扩容,所以有了这个疑惑。)

写回答

1回答

Moody

2022-07-23

1024指的确实是数组长度,占用内存就和元素的大小有关了
超过1024长度时,不会直接翻倍,而是每次扩1/4,比如现在长度正好是1024,需要扩容时,会扩1/4,也就是增加256个长度,新的长度就是1024+256=1280。
所以 这里256就是在这个例子里出现的,没有别的特殊含义。
0
0

深入Go底层原理,重写Redis中间件实战

深入Go语言原理+Go重写Redis

474 学习 · 172 问题

查看课程