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

Обработка ситуации с нехваткой динамической памяти - C++

Восстановить пароль Регистрация
 
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
17.12.2013, 02:22     Обработка ситуации с нехваткой динамической памяти #1
Хочу обработать ситуацию с нехваткой памяти.
Пишу стандартно:

A=new double[N];
if(!A) {...;}

Но дебагер до if-а не доходит, я так понимаю что-то перехватывает исключение...
Неужели "ручками" уже не обработаешь, только через исключения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 02:22     Обработка ситуации с нехваткой динамической памяти
Посмотрите здесь:

Удаление динамической памяти C++
C++ Вопрос по динамической памяти
C++ Распределение динамической памяти!
Обработка исключительных ситуации C++
C++ Массив в динамической памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 02:43     Обработка ситуации с нехваткой динамической памяти #2
C++
1
A = new(nothrow) double[N];
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
17.12.2013, 14:00  [ТС]     Обработка ситуации с нехваткой динамической памяти #3
Что-то не помогло:

подключаю
C++
1
2
3
4
#include <new>
...
A=new(std::nothrow) double[N]
if (!A) {...}
До if всеравно не доходит... В чем может быть проблемма?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
17.12.2013, 14:12     Обработка ситуации с нехваткой динамической памяти #4
loou, а N объявлена? И точка с запятой стоит в третьей строке?
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
17.12.2013, 14:15  [ТС]     Обработка ситуации с нехваткой динамической памяти #5
Да конечно, извиняюсь за невнимательность.
Все компилируется и дебаг запускается и даже exe, вот только до if не доходит если N очень большое, появляется системное сообщение что память выделить не удалось, программа закрывается...
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.12.2013, 14:25     Обработка ситуации с нехваткой динамической памяти #6
Цитата Сообщение от loou Посмотреть сообщение
вот только до if не доходит если N очень большое
код в студию.
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
17.12.2013, 14:34  [ТС]     Обработка ситуации с нехваткой динамической памяти #7
Эммм... Ну не весь же его выкладывать...

new(nothrow) использую в методе класса,
if следует прямо за ним,
<new> подключаю в файле где описан метод.

Хочу еще попытаться <new> подключить в файле с основной функцией _tWinMain

Может ли влиять то что это Windows программа?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
17.12.2013, 14:39     Обработка ситуации с нехваткой динамической памяти #8
Цитата Сообщение от loou Посмотреть сообщение
Эммм... Ну не весь же его выкладывать...
Создайте минимальный пример при котором проявляется ситуация и выкладывайте.
Иначе гадать можно долго.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 16:36     Обработка ситуации с нехваткой динамической памяти #9
В release такая конструкция нормально работает, в debug - не нормально (конфигурация Win32):
C++
1
2
3
4
5
6
7
double* A;
unsigned long int N = 1000000000;
A = new(nothrow) double[N];
if (!A) 
{
    cout << "Error!" << endl;
}
В судии, в debug, виснет на выделении. В mingv и в debug нормально работает.
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
18.12.2013, 15:36  [ТС]     Обработка ситуации с нехваткой динамической памяти #10
Действительно в Release все работает как нада.

А как же дебажить???
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 16:51     Обработка ситуации с нехваткой динамической памяти
Еще ссылки по теме:

C++ Массив в динамической памяти
C++ выделение динамической памяти
C++ Обработка исключительной ситуации с файлом

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
18.12.2013, 16:51     Обработка ситуации с нехваткой динамической памяти #11
Цитата Сообщение от alsav22 Посмотреть сообщение
В судии, в debug, виснет на выделении. В mingv и в debug нормально работает.
Борландовый компилятор прекрасно кушает. Просто для сведения.
Yandex
Объявления
18.12.2013, 16:51     Обработка ситуации с нехваткой динамической памяти
Ответ Создать тему
Опции темы

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