Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 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. Показов 3572. Ответов 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
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 19:17 2
Ошибка исполнения std::bad_array_new_length
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 19:19 3
Amber17, какой длины массив создаете?
0
0 / 0 / 0
Регистрация: 16.08.2019
Сообщений: 10
17.08.2019, 19:23  [ТС] 4
массив длины n
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 19:30 5
Amber17,
Цитата Сообщение от Amber17 Посмотреть сообщение
массив длины n
тоесть ошибка во время компиляции?
0
0 / 0 / 0
Регистрация: 16.08.2019
Сообщений: 10
17.08.2019, 19:46  [ТС] 6
Ну да. При нажатии F5
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:04 7
Amber17, а что за значение в файле? Такая ошибка обычно при отрицательных размерах массива либо слишком больших.
0
0 / 0 / 0
Регистрация: 16.08.2019
Сообщений: 10
17.08.2019, 20:14  [ТС] 8
Значение в файле я указывала "от балды", может, в этом дело?
123457638902 (без пробелов)
0
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 20:28 9
Цитата Сообщение от Amber17 Посмотреть сообщение
Значение в файле я указывала "от балды", может, в этом дело?
123457638902 (без пробелов)
да, попробуйте ввести число поменьше
0
0 / 0 / 0
Регистрация: 16.08.2019
Сообщений: 10
17.08.2019, 20:34  [ТС] 10
А не несколько чисел? Ведь это массив
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:44 11
Amber17, если не выйдет ,я не уверен но
Цитата Сообщение от Amber17 Посмотреть сообщение
fin >> n;
мне кажется (только кажется ) что возвращает значение не типа int ,попробуйте вывести значение которое выводит fin>>.

Добавлено через 3 минуты
Amber17, Вы пытаетесь задать размер массива, а не его элементы, тоесть к примеру float * arr = new float[5] создаст массив размером 5 элементов, а дальше Вы можете сделать уже arr[0] = 5.23; это уже инициализации объектов массива, тоесть первый объект массива будет равен 5.23

Добавлено через 4 минуты
Amber17,
Цитата Сообщение от ReYalp Посмотреть сообщение
попробуйте вывести значение которое выводит fin>>.
точнее даже не так , либо попытайтесь использовать
string line;
getline(fin, line);
float * arr = new float[stoi(line)];

Добавлено через 1 минуту
при условии что в первой строке ничего кроме числа нету.
0
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 20:48 12
Цитата Сообщение от ReYalp Посмотреть сообщение
Вы пытаетесь задать размер массива, а не его элементы, тоесть к примеру float * arr = new float[5] создаст массив размером 5 элементов, а дальше Вы можете сделать уже arr[0] = 5.23; это уже инициализации объектов массива, тоесть первый объект массива будет равен 5.23
Может я не понял, но причем здесь инициализация первого элемента массива? Когда тут проблема с
std::bad_array_new_length
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:50 13
Ju-87, при том что возможно ТС не понимает что он делает ,такой вывод я сделал после
Цитата Сообщение от Ju-87 Посмотреть сообщение
да, попробуйте ввести число поменьше
Цитата Сообщение от Amber17 Посмотреть сообщение
А не несколько чисел? Ведь это массив
0
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 20:52 14
Как видите при n = 5, ошибок никаких не возникает
0
Миниатюры
Возникло необработанное исключение по адресу 0x73A62CF2:  исключение Microsoft C++: std::bad_array_new_length  
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:53 15
Ju-87, а
Цитата Сообщение от Ju-87 Посмотреть сообщение
std::bad_array_new_length
появляется только в 3 случаях
1) array length is negative

2) total size of the new array would exceed implementation-defined maximum value

3) the number of initializer-clauses exceeds the number of elements to initialize

Only the first array dimension may generate this exception; dimensions other than the first are constant expressions and are checked at compile time.
(Взято с сайта cppreference.com).
0
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 20:53 16
ReYalp,

Не по теме:

аа, понятно

0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:54 17
Ju-87, а при 123457638902?
Цитата Сообщение от Ju-87 Посмотреть сообщение
Как видите при n = 5, ошибок никаких не возникает
0
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 20:55 18
Цитата Сообщение от ReYalp Посмотреть сообщение
появляется только в 3 случаях
1) array length is negative
2) total size of the new array would exceed implementation-defined maximum value
3) the number of initializer-clauses exceeds the number of elements to initialize
Only the first array dimension may generate this exception; dimensions other than the first are constant expressions and are checked at compile time.
(Взято с сайта cppreference.com).

Не по теме:

я знаю при каких случаях она возникает, зачем вы мне это скинули



Добавлено через 28 секунд
Цитата Сообщение от ReYalp Посмотреть сообщение
а при 123457638902?
Цитата Сообщение от ReYalp Посмотреть сообщение
2) total size of the new array would exceed implementation-defined maximum value
пожалуйста
0
49 / 33 / 9
Регистрация: 27.12.2017
Сообщений: 1,398
17.08.2019, 20:56 19
Ju-87, но почему у меня не возникает ошибки при создании float * arr = new float[123457638902];?
0
87 / 23 / 8
Регистрация: 30.03.2019
Сообщений: 172
17.08.2019, 20:58 20
И кстати, если указать это число, вам придется еще в файле указывать значение овер90000 чисел, удобно, не правда ли?

Добавлено через 55 секунд
Цитата Сообщение от ReYalp Посмотреть сообщение
но почему у меня не возникает ошибки при создании float * arr = new float[123457638902
значит, она могла не указать значения всех элементов массива в файле...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2019, 20:58

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

Возникло необработанное исключение
#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)...


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

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

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