| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Если не хватает памяти на исключение? |
| Автор: IvanoffAndrey 14.9.2007, 17:09 | ||
| Согласно Страуструпу, минимум свободной памяти, которая должна быть доступна программе это память необходимая для генерации исключения bad_alloc. Это значит всего лишь, что насколько я понимаю bad_alloc (естественно потомок дригих классов) представляет некое подобие статической переменной которую одну и ту же постоянно бросают. Почему бы, при написании своих исключений (конечно же включенный в общую иерархию), не делать таким образом. К примеру:
Я не описал инициализацию переменной EXC нарочно - и так вроде понятно. [B]Таким образом, поскольку данная статическая переменная будет инициализировать задолго до создания объекта (размер которого может быть очень большим) а именно на этапе запуска проги (помоему), то память мы уже под исключение зарезервировали и на его бросание хватит места.[B] Если это не так, то я не знаю каким образом тратися память на бросание исключение кроме как на создание объекта????? Кто что думает по этому поводу.? |
| Автор: JackYF 14.9.2007, 17:40 |
| Если не хватает памяти даже на исключение, то программе пора убиваться об стену. Ей бессмысленно делать что-либо другое - памяти-то нет. |
| Автор: zkv 14.9.2007, 17:47 |
ей можно попробовать память освободить |
| Автор: IvanoffAndrey 14.9.2007, 18:00 | ||||
Действительно, к примеру скинуть что-нибудь временное на хард. Добавлено через 29 секунд
|
| Автор: Mayk 14.9.2007, 18:45 | ||
Не то Александрески, не то Саттер, не то они оба, но есть слухи что в современных условиях на PC проверять успешность выделения памяти бессмыссленно. Вот что по этому поводу говорит malloc(3)
Добавлено через 27 секунд Короче, если программе не хватает памяти, то она об этом попросту может никогда не узнать. |
| Автор: JackYF 14.9.2007, 20:32 |
предполагались, что эти попытки уже были сделаны гыгык |
| Автор: UnrealMan 15.9.2007, 11:15 | ||
В C++ одновременно может существовать несколько неперехваченных исключений (в том числе одного типа). |
| Автор: Любитель 15.9.2007, 13:01 | ||
У первого не помню (его всё же больше всякие изящества интересуют |
| Автор: IvanoffAndrey 15.9.2007, 20:02 | ||
| Плиз скинте название книги. Я очень люблю всякие книжки читать. Но об том авторе ничего прежде не слышал. Как понимаю это все еще классика? Добавлено через 7 минут и 21 секунду
Насколько я помню больше одного исключения (может больше двух) С++ не может обработать вообще и в этой ситуации просто грубо завершает программу?. |
| Автор: UnrealMan 15.9.2007, 21:56 | ||
Необработанных исключений может быть сколько угодно, только все они должны приходить к разным обработчикам. |
| Автор: Любитель 16.9.2007, 13:49 | ||
Саттер: "Сложные задачи по C++" и (новее и интереснеее) "Новые сложные задачи по C++". Да - классика, но не совсем тривиальная. |
| Автор: IvanoffAndrey 16.9.2007, 16:08 |
| А что за книга у Александрески? |