gpt4 book ai didi

c - 为字符串分配内存的节省时间和内存的方法

转载 作者:太空狗 更新时间:2023-10-29 15:47:06 25 4
gpt4 key购买 nike

我正在通过将字节复制到动态数组来将文件读入 C 中的内存。目前,每当有新字节进入时,我都会重新分配()一个字节。这似乎效率低下。

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

对内存分配有什么建议吗?

最佳答案

如果您将整个文件加载到一个字符串中,您可能会使用此 question 中概述的方法.通过这种方式,您可以获得文件的大小(以字节为单位)并分配您的字符串来保存它(不要忘记空字符的额外字节)。

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

  1. 我见过有人四舍五入到 2 的下一个幂,例如 2、4、8,然后是 16 字节。 (这基本上每次都会使文件大小加倍)。

  2. 我还看到人们使用更适合他们打算读取的字符串的值,即。一次 100 个字节。

如果您过度分配字符串,您总是可以在最后通过最终重新分配到您需要的确切大小来取回该内存。

关于c - 为字符串分配内存的节省时间和内存的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com