Я собираюсь проанализировать код glibc-2.25 malloc.c. И у меня есть вопрос об этом коде, связанном с процессом fastbin. То, что мне было интересно, это в то время как цикл.
Я думаю, что возвращаемое значение catomic_compare_and_exchange_val_acq
является жертвой, а цикл while всегда ложен. Моя интерпретация верна?
if ((unsigned long) (nb) <= (unsigned long) (get_max_fast ()))
{
idx = fastbin_index (nb);
mfastbinptr *fb = &fastbin (av, idx);
mchunkptr pp = *fb;
do
{
victim = pp;
if (victim == NULL)
break;
}
while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim)) != victim);
Я ожидаю, кто расскажет мне о деталях для этого while_condition