返回信息流看到这里有点疑问,为什么数组长度要加倍呢?难道不能直接一个4097长度的数组吗?
[upload=1][/upload]
这是一条镜像帖。来源:北邮人论坛 / cpp / #97302同步于 2018/3/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
【问题】一个关于数组长度的小问题
dakewang
2018/3/22镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
出于时间与空间的权衡吧。一方面频繁开辟内存的开销是很大的;另一方面,由于数组的空间要求连续,试想这样一种情况:当前已经开辟了4096字节空间,然后扩充1字节,然而这4096字节后已经没有连续的1字节空间了,因此需要在内存中找到一块新的4097字节的连续空间,然后把旧空间里的数据复制过去。由此可见,这种操作开销非常大,因此一些成熟的实现都是一次性扩充1.5或2倍,例如STL中的vector。