Правильна ли моя интерпретация для приведенного ниже кода (malloc.c)? - PullRequest
0 голосов
/ 28 марта 2019

Я собираюсь проанализировать код 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...