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

Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? - C++

Восстановить пароль Регистрация
 
vechestva
-28 / 0 / 0
Регистрация: 14.09.2012
Сообщений: 47
17.11.2012, 08:51     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? #1
По УМОЛЧАНИЮ при динамическом выделении, если не хватает памяти, возвращается NULL или bad_alloc?
Так и не нашел конкретного ответа. Английский плохо понимаю, чтобы детально шариться в стандарте
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2012, 08:51     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc?
Посмотрите здесь:

C++ Ошибка при выделении памяти под двумерный массив
C++ Куча была повреждена. При выделении памяти
Ошибка при выделении памяти C++
Ошибка при выделении памяти C++
Ошибка при выделении памяти динамически для структуры C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
17.11.2012, 08:58     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? #2
ЕМНИП, возвращается исключение. Стандарта под рукой нету, буду дома, уточню.

UPD: да, выбрасывается исключение. 1.8.4.1p4:

Returns a pointer to the allocated storage if the attempt is successful. Otherwise, if the last argument to
set_new_handler() was a null pointer, throw bad_alloc.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
17.11.2012, 09:45     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? #3
В древних стандартах возвращался NULL, начиная кааца с C++98 выбрасывают bad_alloc. На любом более-менее современном компиляторе (выпущенном за последний где-нибудь десяток лет) можно смело расссчитывать на выброс исключений.
Байт
 Аватар для Байт
13964 / 8795 / 1223
Регистрация: 24.12.2010
Сообщений: 15,930
17.11.2012, 09:57     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? #4
Nick Alte, Значит ли это, что в конструкции
C
1
2
3
4
 p = malloc(...);
if (p==NULL) {
  // Никогда не сработает
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
17.11.2012, 11:19     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc? #5
Байт, имелось в виду выделение памяти с помощью оператора new. Сишные функции исключений не выбрасывают.
Yandex
Объявления
17.11.2012, 11:19     Стандарт. По УМОЛЧАНИЮ при дин. выделении, если не хватает памяти, вызывается NULL или bad_alloc?
Ответ Создать тему
Опции темы

Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru