С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Волновой алгоритм - поиск минимального пути http://www.cyberforum.ru/cpp-beginners/thread1011624.html
Доброго времени суток всем. Не могу въехать в алгоритм волновой для поиска минимального пути. Видел кучу примеров с готовым кодом, читал, но не дошло. Брал готовый пример, изменял, и при этом он...
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. Просмотров 519. Ответов 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);
  }
}
При этом юнит-тестирование на серверах гугла проходится. В чём собственно загвоздка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.