在一个有很多迭代的循环中,在循环的开始我分配一些空间,处理它并在结束时释放它。类似的东西:
....
while(...){
list=malloc(N);
do_some_work_with_list(...)
free(list)
}
这里会不会产生碎片?
PS 我已经尝试发布这个问题,但后来找不到了,抱歉,如果重复
最佳答案
好吧,这取决于。如果没有其他分配发生,也不会发生碎片,因为分配的 block 将在分配下一个 block 之前被释放。但是,如果 do_some_work_with_list
分配了返回前未释放的内存,则可能会发生碎片。此外,如果其他线程、库调用等在那里分配,可能会产生碎片。
关于c - 在这种情况下是否发生堆碎片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430422/