Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
1

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

17.12.2013, 02:22. Просмотров 532. Ответов 10
Метки нет (Все метки)

Хочу обработать ситуацию с нехваткой памяти.
Пишу стандартно:

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

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

Обработка исключительных ситуации
Постройте таблицу значений функции y=f(x) для с шагом h. Если в некоторой...

Обработка исключительной ситуации с файлом
нужно сделать обработку исключительной ситуации- невозможность открыть файл....

Обработка исключительной ситуации переполнения вещественного числа
Помогите написать программу, которая выполняет обработку исключительной...

Выделение динамической памяти
Чем int *List = new int; delete List; отличается от обычного массива...

Выделение динамической памяти
Доброго времени суток! я начинающий программист, столкнулась с такой...

10
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 02:43 2
C++
1
A = new(nothrow) double[N];
1
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 всеравно не доходит... В чем может быть проблемма?
0
SatanaXIII
Почетный модератор
Эксперт С++
5791 / 2787 / 384
Регистрация: 01.11.2011
Сообщений: 6,789
Завершенные тесты: 1
17.12.2013, 14:12 4
loou, а N объявлена? И точка с запятой стоит в третьей строке?
0
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
17.12.2013, 14:15  [ТС] 5
Да конечно, извиняюсь за невнимательность.
Все компилируется и дебаг запускается и даже exe, вот только до if не доходит если N очень большое, появляется системное сообщение что память выделить не удалось, программа закрывается...
0
Tulosba
:)
Эксперт С++
4751 / 3245 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.12.2013, 14:25 6
Цитата Сообщение от loou Посмотреть сообщение
вот только до if не доходит если N очень большое
код в студию.
0
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
17.12.2013, 14:34  [ТС] 7
Эммм... Ну не весь же его выкладывать...

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

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

Может ли влиять то что это Windows программа?
0
Tulosba
:)
Эксперт С++
4751 / 3245 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.12.2013, 14:39 8
Цитата Сообщение от loou Посмотреть сообщение
Эммм... Ну не весь же его выкладывать...
Создайте минимальный пример при котором проявляется ситуация и выкладывайте.
Иначе гадать можно долго.
1
alsav22
5450 / 4845 / 831
Регистрация: 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 нормально работает.
1
loou
1 / 1 / 0
Регистрация: 02.08.2013
Сообщений: 29
18.12.2013, 15:36  [ТС] 10
Действительно в Release все работает как нада.

А как же дебажить???
0
SatanaXIII
Почетный модератор
Эксперт С++
5791 / 2787 / 384
Регистрация: 01.11.2011
Сообщений: 6,789
Завершенные тесты: 1
18.12.2013, 16:51 11
Цитата Сообщение от alsav22 Посмотреть сообщение
В судии, в debug, виснет на выделении. В mingv и в debug нормально работает.
Борландовый компилятор прекрасно кушает. Просто для сведения.
0
18.12.2013, 16:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 16:51

Освобождение динамической памяти
Здравствуйте! Была задача реализовать сложение длинных чисел с помощью...

Удаление динамической памяти
Всем здрасьте. Имеется вот такая структура. struct ModelType { DWORD FVF;...

Матрица в динамической памяти
Здраствуйте,начал проходить динамическую память ,так немогу зделать 2-х мерный...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru