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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
#1

SEHException не обработано - C++

19.05.2012, 13:37. Просмотров 564. Ответов 4
Метки нет (Все метки)

Всем привет!

Первый раз сталкиваюсь с такой ошибкой "SEHException не обработано".
она ругается на строки такого вида
C++
1
double *a=new double[n]
подскажите пожалуйста, чем это может быть вызвано.

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 13:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SEHException не обработано (C++):

Почему кидает SEHException? - C++
Здравствуйте! Ситуация такова: есть клас DCEL (рёберный список с двойной связностью). В нём два public метода: EdgesForVertex - возвращает...

SEHException при заполнении вектора - C++
тут такое дело... если в кратце, есть вектор summa, заполняю его нулями и вылезает SEHException. Я так понимаю, ему не хватает памяти, или...

Исключение не обработано в VC2017 - C++
добрый вечер . подскажите в чем ошибка #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main()...

Необработанное исключение типа system.runtime.interopservices.SEHException - C++/CLI WinForms
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { System::String^ temp =...

.NET 4.x ThreadAbortException не обработано - C#
Здравствуйте. Возникла такая проблема. В отдельном потоке Thread создаётся и открывается форма. В форме есть кнопка, которая завершает...

Nullreferenceexception не обработано - C#
Имею такой вот код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

4
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
19.05.2012, 13:58 #2
Слишком большое n, не?
Хотя этот оператор не должен вызывать структурных исключений, просто std::bad_alloc должно быть.
Целиком код давай, в общем.
1
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
19.05.2012, 14:00 #3
возможно HEAP был поврежден и теперь будут выскакивать не обрабатываемые исключения на любой new/delete/malloc/free
1
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
19.05.2012, 14:46  [ТС] #4
вобщем у меня всё это было из-за вызова функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
double* hanning(int n)
    {
        double *w;
        double half;
        if (!n%2)
        {
            half=n/2;
            w=calc_hanning(half, n);
            int j=1;
            for (int i=half; i<n; i++)
            {
                w[i]=w[(int)n-j];
                j++;
            }
        }
        else
        {
            half=(n+1)/2;
            w=calc_hanning(half, n);
            int j=1;
            for (int i=half; i<n; i++)
            {
                w[(int)n-j]=w[i];
                j++;
            }
        }
        return w;
    }
 
double *calc_hanning(double m, double n)
    {
    
        double *w=new double[(int)m];
        for (int i=1; i<=m; i++)
        {
            w[i]=5*(1-cos(2*3.14*i))/(n+1);
        }
        return w;
    }
потом я в функции hanning выделила память под double *w b вместо вызова функции calc_hanning написала код этой функции
C++
1
2
3
4
for (int i=1; i<=m; i++)
    {
        w[i]=5*(1-cos(2*3.14*i))/(n+1);
    }
и ошибка пропала)
видимо да, всё было из-за неправильной работы с указателями.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
19.05.2012, 15:30 #5
Цитата Сообщение от Flamе Посмотреть сообщение
double *w=new double[(int)m]; for (int i=1; i<=m; i++)
У тебя выход за пределы массива и ты этим портила кучу. О чём компилятор и намекал.
Индексация в С++ начинается с нуля, не забывай об этом.
Кроме того, ты не можешь наверняка знать размер массива, т.к. вещественные числа представляются не точно. При некоторых размерах целое число записывается не точно. Например, вместо 4, может быть 3.999999999. После преобразования в int получится 3 и последний элемент не будет обработан.

Добавлено через 41 секунду
Цитата Сообщение от Flamе Посмотреть сообщение
всё было из-за неправильной работы с указателями
А вот с ними всё вроде бы правильно.)
1
19.05.2012, 15:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 15:30
Привет! Вот еще темы с ответами:

Не обработано StackOverflowException - C#
Помогите разобраться! Есть библиотека и две формы. В библиотеке есть метод delta_T() public double delta_T() { ...

ArgumentException не обработано - C#
Привет всем! Столкнулся с проблемой при добавлении рисунка в picturebox. OpenFileDialog dialog = new OpenFileDialog(); ...

.NET 4.x Ошибка ArgumentNulException не обработано - C#
Пытаюсь написать калькулятор в командной строке. При попытке отладки вылетает ошибка ArgumentNulException не обработано на строке if...

SQL exeption не обработано - SQL Server
Что здесь не так?


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

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

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