Здравствуйте, Денис Ильин, Вы писали:
ДИ>Добрый день. Есть интересный вопросец.
ДИ>минипрограмка
ДИ>vector <int> nData; ДИ>while(TRUE) ДИ>{ ДИ> try ДИ> { ДИ> nData.push_back(rand()); ДИ> } ДИ> catch(bad_alloc ba) ДИ> { ДИ> printf("bad alloactor!"); ДИ> } ДИ>}
ДИ>что результат её работы в NT-образных платформах одинаковый: ДИ>через некоторое время выскакивает мессага "Out of memory" ДИ>А мне бы хотелось ловить такие вещи в виде исключений (что бы было в стиле С++) ДИ>Есть ли какой нибудь иной способ отлавливать невозможность выделить память ДИ>(делать это до системы)? (а то следить за свободной памятью геморойно ДИ>и неудобно — и вообще не в стиле С++) ДИ>Спасибо за ответы.
дело в том, что винда использует свои собственные не С++ исключение — "структурные исключения", и они не ловятся обычными try/catch
Обычно при сборке проекта можно указать флажок, который приведет к тому, что структурные исключения винды будут транслироваться в С++-исключения, и тогда их можно будет ловить.