c - 在 C 中向字符串添加子字符串时重新分配内存的最佳方法

标签 c string realloc

我有:

char *data = malloc(file_size+1);

我还有字符串,例如 char *string = "string1"。 每当我要向数据添加另一个字符串时,我都希望能够将内存重新分配给数据。在 C 中执行此操作的最佳方法是什么,我见过其他方法,例如使用 file_size * 2,但是,这会浪费内存,添加字符串长度时执行此操作的最佳方法是什么到内存中。这是一个简单的桌面应用程序。

最佳答案

这在很大程度上取决于您要针对什么进行优化,这里很难回答这个问题,因为您没有过多说明“最佳”对您意味着什么,即约束是什么。

对于在桌面或服务器机器上运行的通用程序,我会从一开始就过度分配很多,以避免必须调用 realloc(),并且通常会加倍分配每次溢出。除非需要,否则内存可能不会(物理上)使用,那么为什么要尝试“保存”它呢?

如果分配将长期存在(数天或数周),尝试更加保守可能是有意义的。如果串联的数量很少,则可能不会。等等。

关于c - 在 C 中向字符串添加子字符串时重新分配内存的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23269884/

相关文章:

c++ - 将存储在int中的内存地址分配给int

objective-c - Swift转换C的uint64_t与使用自己的UInt64类型不同

C:大数据排序;不在内存中

c - 在 C 中拆分不带引号的字符串

c++ - 在 C++ 中使用定界符高效解析多个数字的函数

c - 使用 `realloc()` 在 C 数组堆栈中重新使用整数指针

c++ - 在 C++ 中使用 realloc

c - scanf_s() 不返回每个输入

php - laravel 检索请求输入返回 null

c - 添加的值不会正确保存到 malloc 数组。我忽略了内存泄漏吗?