Del*_*ani 3 c memory-management
我通过将字节复制到动态数组,将文件读入C中的内存.目前,每次新字节进入时,我realloc()大一个字节.这似乎效率低下.
有些人建议(我不记得在哪里)每次需要更多的内存是好的,因为它是O(log n)分配时间,只有不到一半的内存未使用的最坏情况.
关于内存分配的任何建议?
如果要将整个文件加载到字符串中,则可以使用此问题中概述的方法.这样你就可以获得文件的大小(以字节为单位)并分配你的字符串以保存它(不要忘记空字符的额外字节).
但是,如果你动态增长一个字符串,最好将它的大小增加一个大于单个字节的因子(重新分配一个字符串,每个字节将非常慢,特别是如果字符串必须在一个新区域中分配的内存,然后复制过来).由于您正在阅读文件翻倍,因此可能非常合理.我见过人们也使用其他方法来做到这一点,例如:
我已经看到人们轮到2的下一个幂,例如2,4,8,然后是16个字节.(这基本上是每次文件大小加倍).
我也看到人们使用的值更适合他们打算阅读的字符串,即.一次100个字节.
如果你过度分配字符串,你总是可以在最后重新分配内存,最后重新分配到你需要的确切大小.
归档时间: |
|
查看次数: |
308 次 |
最近记录: |