Re: какое исключение ловить?
От: jazzer Россия Skype: enerjazzer
Дата: 13.02.04 15:00
Оценка:
Здравствуйте, Денис Ильин, Вы писали:

ДИ>Добрый день. Есть интересный вопросец.


ДИ>минипрограмка


ДИ>vector <int> nData;

ДИ>while(TRUE)
ДИ>{
ДИ> try
ДИ> {
ДИ> nData.push_back(rand());
ДИ> }
ДИ> catch(bad_alloc ba)
ДИ> {
ДИ> printf("bad alloactor!");
ДИ> }
ДИ>}

ДИ>что результат её работы в NT-образных платформах одинаковый:

ДИ>через некоторое время выскакивает мессага "Out of memory"
ДИ>А мне бы хотелось ловить такие вещи в виде исключений (что бы было в стиле С++)
ДИ>Есть ли какой нибудь иной способ отлавливать невозможность выделить память
ДИ>(делать это до системы)? (а то следить за свободной памятью геморойно
ДИ>и неудобно — и вообще не в стиле С++)
ДИ>Спасибо за ответы.

дело в том, что винда использует свои собственные не С++ исключение — "структурные исключения", и они не ловятся обычными try/catch

Обычно при сборке проекта можно указать флажок, который приведет к тому, что структурные исключения винды будут транслироваться в С++-исключения, и тогда их можно будет ловить.

Смотри документацию на свой компилятор/линкер.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.