加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为字符串分配内存的时间和内存高效方法

发布时间:2020-12-16 10:40:16 所属栏目:百科 来源:网络整理
导读:我通过将字节复制到动态数组,将文件读入C中的内存.目前,每次新字节进入时,我realloc()大一个字节.这似乎效率低下. 有些人建议(我不记得在哪里)每次需要更多的内存是好的,因为它是O(log n)分配时间,只有不到一半的内存未使用的最坏情况. 关于内存分配的任何建
我通过将字节复制到动态数组,将文件读入C中的内存.目前,每次新字节进入时,我realloc()大一个字节.这似乎效率低下.

有些人建议(我不记得在哪里)每次需要更多的内存是好的,因为它是O(log n)分配时间,只有不到一半的内存未使用的最坏情况.

关于内存分配的任何建议?

解决方法

如果要将整个文件加载到字符串中,则可以使用此 question中概述的方法.这样,您可以获取文件的大小(以字节为单位)并分配字符串以保存(不要忘记额外的字节)空字符).

但是,如果你动态增长一个字符串,最好将它的大小增加一个大于单个字节的因子(重新分配一个字符串,每个字节将非常慢,特别是如果字符串必须在一个新区域中分配的内存,然后复制过来).由于您正在阅读文件翻倍,因此可能非常合理.我见过人们也使用其他方法来做到这一点,例如:

>我已经看到人们轮到2的下一个幂,例如2,4,8,然后是16个字节. (这基本上是每次文件大小加倍).
>我也看到人们使用的值更适合他们打算阅读的字符串,即.一次100个字节.

如果你过度分配字符串,你总是可以在最后重新分配内存,最后重新分配到你需要的确切大小.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读