为字符串分配内存的时间和内存高效方法
发布时间:2020-12-16 10:40:16 所属栏目:百科 来源:网络整理
导读:我通过将字节复制到动态数组,将文件读入C中的内存.目前,每次新字节进入时,我realloc()大一个字节.这似乎效率低下. 有些人建议(我不记得在哪里)每次需要更多的内存是好的,因为它是O(log n)分配时间,只有不到一半的内存未使用的最坏情况. 关于内存分配的任何建
我通过将字节复制到动态数组,将文件读入C中的内存.目前,每次新字节进入时,我realloc()大一个字节.这似乎效率低下.
有些人建议(我不记得在哪里)每次需要更多的内存是好的,因为它是O(log n)分配时间,只有不到一半的内存未使用的最坏情况. 关于内存分配的任何建议? 解决方法
如果要将整个文件加载到字符串中,则可以使用此
question中概述的方法.这样,您可以获取文件的大小(以字节为单位)并分配字符串以保存(不要忘记额外的字节)空字符).
但是,如果你动态增长一个字符串,最好将它的大小增加一个大于单个字节的因子(重新分配一个字符串,每个字节将非常慢,特别是如果字符串必须在一个新区域中分配的内存,然后复制过来).由于您正在阅读文件翻倍,因此可能非常合理.我见过人们也使用其他方法来做到这一点,例如: >我已经看到人们轮到2的下一个幂,例如2,4,8,然后是16个字节. (这基本上是每次文件大小加倍). 如果你过度分配字符串,你总是可以在最后重新分配内存,最后重新分配到你需要的确切大小. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |