Форум программистов, компьютерный форум CyberForum.ru

Аллокатор в chrome - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Волновой алгоритм - поиск минимального пути http://www.cyberforum.ru/cpp-beginners/thread1011624.html
Доброго времени суток всем. Не могу въехать в алгоритм волновой для поиска минимального пути. Видел кучу примеров с готовым кодом, читал, но не дошло. Брал готовый пример, изменял, и при этом он выдавал ерунду. Суть в чём: я с помощью массива делаю простенькую карту(лабиринт). 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 1 1 1 0 - стена, 1 - можно идти. тут видно что...
C++ Пианино в C++ Только начал постигать азы и решил заняться созданием своего пианино. Пока нуждаюсь в помощи выбора лит-ры и примерное описание того, что придется делать. И еще хотел бы узнать, сколько потребуется времени что бы его создать человеку, который язык вот только только начал изучать? http://www.cyberforum.ru/cpp-beginners/thread1011617.html
C++ Стек
нужно написать прогу, которая создает новый стек из парных чисел старого.
Напишите программу, которая просит вас ввести какое-нибудь значение кода ASCII (например, 66), а затем выводит на экран символ, соответствующий этому C++
Напишите программу, которая просит вас ввести какое-нибудь значение кода ASCII (например, 66), а затем выводит на экран символ, соответствующий этому коду.
C++ Выведите значение 333.54378 с шириной поля вывода 15 символов, с точностью 1, 2, 3, 4 и 5. Выровняйте выводимые значения по левому краю. Какими будут http://www.cyberforum.ru/cpp-beginners/thread1011611.html
Выведите значение 333.54378 с шириной поля вывода 15 символов, с точностью 1, 2, 3, 4 и 5. Выровняйте выводимые значения по левому краю. Какими будут эти пять выводимых значений?
C++ Алгоритмы Помогите с Лабораторкой Вот собственно задание! Модифицируйте алгоритм сортировки слиянием для массива целых чисел таким образом, чтобы можно было контролировать извне способ сортировки малого количества элементов. Общий алгоритм сортировки слиянием должен принимать дочерний алгоритм, такой как пузырьковая сортировка, вставками или выбором, в виде указателя на функцию. Если передан... подробнее

Показать сообщение отдельно
kvadro
11 / 9 / 1
Регистрация: 12.03.2012
Сообщений: 127

Аллокатор в chrome - C++

19.11.2013, 03:45. Просмотров 460. Ответов 5
Метки (Все метки)

Всем привет, начал изучать исходники хрома, в аллокаторе, метод realloc должен возвращать nullptr если передаваемый аргумент size равен нулю:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void* realloc(void* ptr, size_t size) __THROW {
  // Webkit is brittle for allocators that return NULL for malloc(0).  The
  // realloc(0, 0) code path does not guarantee a non-NULL return, so be sure
  // to call malloc for this case.
  if (!ptr)
    return malloc(size);
 
  void* new_ptr;
  for (;;) {
#ifdef ENABLE_DYNAMIC_ALLOCATOR_SWITCHING
    switch (allocator) {
      case JEMALLOC:
        new_ptr = je_realloc(ptr, size);
        break;
      case WINHEAP:
      case WINLFH:
        new_ptr = win_heap_realloc(ptr, size);
        break;
      case TCMALLOC:
      default:
        new_ptr = do_realloc(ptr, size);
        break;
    }
#else
    // TCMalloc case.
    new_ptr = do_realloc(ptr, size);
#endif
 
    // Subtle warning:  NULL return does not alwas indicate out-of-memory.  If
    // the requested new size is zero, realloc should free the ptr and return
    // NULL.
    if (new_ptr || !size)
      return new_ptr;
    if (!new_mode || !call_new_handler(true))
      break;
  }
  return new_ptr;
}
При этом в юнит-тестах написано что должно быть наоборот:

C++
1
2
3
4
5
6
7
8
9
10
11
TEST(Allocators, ReallocZero) {
  // Test that realloc to zero does not return NULL.
  for (int size = 0; size >= 0; size = NextSize(size)) {
    char* ptr = reinterpret_cast<char*>(malloc(size));
    EXPECT_NE(static_cast<char*>(NULL), ptr);
    ptr = reinterpret_cast<char*>(realloc(ptr, 0));
    EXPECT_NE(static_cast<char*>(NULL), ptr); // <--- вот
    if (ptr)
      free(ptr);
  }
}
При этом юнит-тестирование на серверах гугла проходится. В чём собственно загвоздка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru