我有:
char *data = malloc(file_size+1);
我还有字符串,例如 char *string = "string1"
。
每当我要向数据添加另一个字符串时,我都希望能够将内存重新分配给数据。在 C 中执行此操作的最佳方法是什么,我见过其他方法,例如使用 file_size * 2,但是,这会浪费内存,添加字符串长度时执行此操作的最佳方法是什么到内存中。这是一个简单的桌面应用程序。
最佳答案
这在很大程度上取决于您要针对什么进行优化,这里很难回答这个问题,因为您没有过多说明“最佳”对您意味着什么,即约束是什么。
对于在桌面或服务器机器上运行的通用程序,我会从一开始就过度分配很多,以避免必须调用 realloc()
,并且通常会加倍分配每次溢出。除非需要,否则内存可能不会(物理上)使用,那么为什么要尝试“保存”它呢?
如果分配将长期存在(数天或数周),尝试更加保守可能是有意义的。如果串联的数量很少,则可能不会。等等。
关于c - 在 C 中向字符串添加子字符串时重新分配内存的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269884/