在一个有很多迭代的循环中,在循环开始时,我分配一些空间,对其进行处理,并在循环结束时释放它像这样的:

....
while(...){
  list=malloc(N);
  do_some_work_with_list(...)
  free(list)
}

这里会发生碎片化吗?
PS我已经试着发了这个问题,但是之后找不到,如果重复的话很抱歉

最佳答案

好吧,这要看情况如果没有发生其他分配,也不会发生碎片,因为分配的块将在分配下一个块之前释放但是,如果do_some_work_with_list在返回之前分配未释放的内存,则可能会出现碎片另外,如果其他线程、库调用等进行分配,则可能存在碎片。

关于c - 在这种情况下会发生堆碎片吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13430422/

10-12 16:06