gpt4 book ai didi

C 编程 : malloc and free within a loop

转载 作者:太空狗 更新时间:2023-10-29 17:26:54 26 4
gpt4 key购买 nike

我刚开始接触 C,对 malloc()free() 的性能问题知之甚少。我的问题是:如果我在 while 循环中调用 malloc(),然后调用 free(),比如 20迭代,与在循环外调用 free() 相比,它会运行得更慢吗?

我实际上是在使用第一种方法为缓冲区分配内存,从文件中读取一个可变长度的字符串,执行一些字符串操作,然后在每次迭代后清除缓冲区。如果我的方法导致大量开销,那么我想寻求一种更好的方法来实现相同的结果。

最佳答案

绝对慢。 (但请记住,您需要平衡 mallocfree 的数量,否则会发生内存泄漏。)

如果长度变化,可以使用realloc来扩展缓冲区大小。

void* v = malloc(1024);
size_t bufsize = 1024;

while(cond) {
size_t reqbufsize = get_length();
if (reqbufsize > bufsize) {
bufsize = reqbufsize * 2;
v = realloc(v, bufsize);
}
// you may shrink it also.

do_something_with_buffer(v);
}

free(v);

关于C 编程 : malloc and free within a loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463828/

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