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

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

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

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

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

Всем привет!

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

Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2012, 13:37     SEHException не обработано
Посмотрите здесь:

COMException не обработано. Ошибка 80040154 C# .NET 4.x
C++ SEHException при заполнении вектора
Ошибка TargetInvocationException не обработано C#
C# FormatException не обработано при приведении типов
C# Ошибка formatexception не обработано
C++ Почему кидает SEHException?
SQL exeption не обработано SQL Server
C# .NET 4.x Ошибка ArgumentNulException не обработано
Необработанное исключение типа system.runtime.interopservices.SEHException C++/CLI WinForms
ThreadAbortException не обработано C# .NET 4.x
FileLoadException не обработано пользовательским кодом C# MVC
C# Nullreferenceexception не обработано

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
19.05.2012, 13:58     SEHException не обработано #2
Слишком большое n, не?
Хотя этот оператор не должен вызывать структурных исключений, просто std::bad_alloc должно быть.
Целиком код давай, в общем.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
19.05.2012, 14:00     SEHException не обработано #3
возможно HEAP был поврежден и теперь будут выскакивать не обрабатываемые исключения на любой new/delete/malloc/free
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
19.05.2012, 14:46  [ТС]     SEHException не обработано #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);
    }
и ошибка пропала)
видимо да, всё было из-за неправильной работы с указателями.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
19.05.2012, 15:30     SEHException не обработано #5
Цитата Сообщение от Flamе Посмотреть сообщение
double *w=new double[(int)m]; for (int i=1; i<=m; i++)
У тебя выход за пределы массива и ты этим портила кучу. О чём компилятор и намекал.
Индексация в С++ начинается с нуля, не забывай об этом.
Кроме того, ты не можешь наверняка знать размер массива, т.к. вещественные числа представляются не точно. При некоторых размерах целое число записывается не точно. Например, вместо 4, может быть 3.999999999. После преобразования в int получится 3 и последний элемент не будет обработан.

Добавлено через 41 секунду
Цитата Сообщение от Flamе Посмотреть сообщение
всё было из-за неправильной работы с указателями
А вот с ними всё вроде бы правильно.)
Yandex
Объявления
19.05.2012, 15:30     SEHException не обработано
Ответ Создать тему
Опции темы

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