Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 16.08.2019
Сообщений: 10
1

Возникло необработанное исключение по адресу 0x73A62CF2: исключение Microsoft C++: std::bad_array_new_length

17.08.2019, 18:56. Показов 3584. Ответов 23
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане
Подскажите начинающему программисту. Ругается на необработанное исключение по адресу 0x73A62CF2. Я так понимаю, что здесь что-то не ладно с длиной массива. Либо выходит за его пределы. Но ЧТО конкретно, понять не могу (в силу своей "зелёности", так скажем). Хотелось бы обратить внимание на строку 21, именно оттуда посылается сообщение об исключении.

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#define _CRT_NO_WARNINGS
#include<fstream>
#include<iostream>
#include<clocale>
using namespace std;
struct Node {
    int left, right;
    Node*p;
};
Node*push(Node* top, const int l, const int r);
Node*pop(Node*top, int &l, int &r);
int main() {
    setlocale(LC_ALL, "ru");
    ifstream fin("sort1.txt");
    if (!fin) {
        cout << "Нет файла sort1.txt" << endl;
        system("pause");
    }
    int n;
    fin >> n;
    float* arr = new float[n];
    for (int i = 0; i < n; i++)
        fin >> arr[i];
    int left, right;
    Node*top = 0;
    top = push(top, 0, n - 1);
    while (top) {
        top = pop(top, left, right);
        while (left < right) {
            int i = left, j = right;
            float middle = arr[(left + right) / 2];
            while (i < j) {
                while (arr[i] < middle) i++;
                while (middle < arr[j]) j--;
                if (i <= j) {
                    float temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                    i++; j--;
 
                }
            }
            if (i < right)
                top = push(top, i, right);
            right = j;
        }
    }
    for (int i = 0; i < n; i++)
        cout << arr[i] << ' ';
}
Node*push(Node*top, const int l, const int r) {
    Node*pv = new Node;
    pv->left = l; pv->right = r; pv->p = top;
    return pv;
}
Node*pop(Node*top, int &l, int &r) {
    Node* pv = top->p;
    l = top->left;
    r = top->right;
    delete top;
    return pv;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2019, 18:56
Ответы с готовыми решениями:

Что я сделал не так?Возникло необработанное исключение по адресу 0x7434A9F2 : исключение Microsoft C++: std
//Калькулятор Intrigger #include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; ...

Возникло необработанное исключение по адресу 0x76B118A2
Ввожу символы на экране, хотел сделать так, что при нажатии backspace они стирались. В некоторых...

Возникло необработанное исключение по адресу 0x75792CF2
при создание массива в куче вылетает программа .При дебаге выдаёт : Возникло необработанное...

Что я сделала не так?Возникло необработанное исключение по адресу 0x73BBDDC2
#include &lt;locale&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...

23
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:58 21
Ju-87, возможно,дело точно не в размере массива.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 21:00 22
И да, как у вас прога скомпилировалась, когда вы не указали значения элементов?

Добавлено через 19 секунд
В файле.

Добавлено через 1 минуту

Не по теме:

А, извиняюсь, там нет обработки исключения на данную проблему

0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 21:04 23
Ju-87, я не пытался ее компилировать и вообще проблема может быть в разрядности системы,если x32 то очевидно что места не хватит для массива
0
6280 / 4263 / 2455
Регистрация: 18.12.2017
Сообщений: 13,295
17.08.2019, 22:07 24
Ju-87, ReYalp, непонятно что вы обсуждаете две страницы

Цитата Сообщение от Amber17 Посмотреть сообщение
Значение в файле я указывала "от балды", может, в этом дело?
123457638902 (без пробелов)
Amber17, в файле нужно указать размер массива (натуральное число) и значения элементов через пробел. например:
10
1 2 3 4 5 7 6 3 8 9

одно число в файле 123457638902 кроме того что не поместится в тип int (преобразится в максимальное значение типа 2147483647). для массива такого размера не хватит памяти.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2019, 22:07

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Возникло необработанное исключение
#include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; void InputMatrix(int **matrix,...

Необработанное исключение в "0x76fd2eec" Microsoft C++: std::bad_alloc
Вот такая ошибка в VS2008, тогда как в 2013 все работает без проблем. Если есть у кого возможность...

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll)...


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

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

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