我将分析glibc-2.25 malloc.c代码。我对此代码相关的fastbin进程有疑问。我想知道的是在while循环中。
我认为catomic_compare_and_exchange_val_acq
的返回值是受害者,而while循环始终为false。我的解释是对的吗?
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的详细信息