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

Ошибка нарушения прав доступа при чтении по адресу, возникающая при инициализации трехмерного массива

05.05.2015, 12:57. Просмотров 418. Ответов 8
Метки нет (Все метки)

Очень нужна ваша помощь! Я уже не знаю что тут можно сделать.
Код части программы, где вылазит ошибка ниже.
Коротко о проблеме: я создаю динамический трехмерный массив. Первые 3 двухмерных массива заполняются без проблем, однако, когда действие доходит до индекса [4][0][0] выдает ошибку (Необработанное исключение по адресу 0x00E8B0BD в AES (Encrypt).exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFDFD.). Массив я задаю с параметрами [kolvo][4][4]. При kolvo=4 и меньше, программа работает отлично. Однако при kolvo=5 и больше вылазит вот такая ошибка... Если задаю статический массив [5][4][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
    int ost, kolvo, n2;
    ost=n%16; // остаток от деления на 16
    if (ost==0) // проверка текста на кратность 16
    {
        n2=n;
        kolvo=n2/16;
    }
    else 
    {
        n2=n+(16-ost);
        kolvo=n2/16;
    }
    //int box[5][4][4];
    int ***box=new int **[4]; // создание трехмерного массива текста с параметрами [kolvo] [4] [4]
    for (int i=0;i<4;i++)
    {
        box[i]=new int *[4];
        for (int j=0;j<4;j++)
            box[i][j]=new int[kolvo];
    }
 
 
    int i=0; // заполнение массива текста
    for (int z=0; z<kolvo; z++)
        for (int m=0; m<4; m++)
            for (int j=0; j<4; j++)
                if (i<n)
                {
                    box[z][m][j]=text_int[i]; 
                            i++;
                }
                else
                {
                    box[z][m][j]=0;
                    i++;
                }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2015, 12:57
Ответы с готовыми решениями:

Ошибка при загрузке фото - нарушение прав доступа при чтении по адресу 0x00814000
При попытке компиляции кода выскакивает ошибка: Первый этап обработки исключения по адресу...

Ошибка: нарушение прав доступа при чтении по адресу
Код: #include &lt;SFML/Graphics.hpp&gt; int M = 3; int N = 3; int Scale = 100; int w = Scale*M;...

Нарушения прав доступа при чтении
Добрый день. Возникла проблема: Во время отладки программы возникает ошибка:...

Нарушения прав доступа при чтении
Всем доброй ночи! Пишу курсовую и появилась проблема: нарушения прав доступа при чтении. Проверил...

Ошибка при работе с OpenCV: "нарушение прав доступа при чтении по адресу"
Привет, всем:-) Имеется следующий код: #include &lt;opencv2/core/core.hpp&gt; #include...

8
egor2116
572 / 376 / 215
Регистрация: 20.01.2013
Сообщений: 1,137
05.05.2015, 16:24 2
доходит до индекса [4][0][0] выдает ошибку
C++
1
 int ***box=new int **[4];
если я не ошибаюсь отсчет индексов начинается с 0, т.е. 0 1 2 3 - общее количество 4 элемента
0
yuharu
0 / 0 / 1
Регистрация: 05.05.2015
Сообщений: 13
05.05.2015, 16:31  [ТС] 3
я знаююю, а у меня массив создается как [5][4][4], прочитайте еще раз мое соообщение
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
05.05.2015, 16:39 4
Цитата Сообщение от yuharu Посмотреть сообщение
у меня массив создается как [5][4][4], прочитайте еще раз мое соообщение
прочитайте еще раз свой код и увидите, что массив у вас создается [4][4][kolvo]
0
yuharu
0 / 0 / 1
Регистрация: 05.05.2015
Сообщений: 13
05.05.2015, 17:00  [ТС] 5
retmas, ааааа то есть я не правильно создала массив? а как тогда сделать правильно?
0
retmas
Жарю без масла
865 / 747 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
05.05.2015, 17:03 6
C++
1
2
3
4
5
6
    int ***box=new int **[kolvo]; // создание трехмерного массива текста с параметрами [kolvo] [4] [4]
    for (int i=0;i<kolvo;i++)
    {
        box[i]=new int *[4];
        for (int j=0;j<4;j++)
            box[i][j]=new int[4];
1
yuharu
0 / 0 / 1
Регистрация: 05.05.2015
Сообщений: 13
05.05.2015, 17:08  [ТС] 7
retmas, можно тогда еще вопрос? при обращении к элементам полученного массива, каждый из индексов начиная слева направо что будет значит? то есть что из них будет столбцом, строкой и как бы еще одним массивом (или не знаю как назвать третий элемент)
0
lss
930 / 859 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
05.05.2015, 17:55 8
Если абстрагироваться: строка, состоящая из kolvo духмерных массивов, состоящих из 4-х строк и 4-х столбцов.
1
yuharu
0 / 0 / 1
Регистрация: 05.05.2015
Сообщений: 13
05.05.2015, 19:31  [ТС] 9
lss, спасибо, долго тупила по поводу этих трехмерных массивов на с++ =_=
0
05.05.2015, 19:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2015, 19:31

Вызвано исключение по адресу 0x013C1891 в Jacobi.exe: 0xC0000005: нарушение прав доступа при чтении по адресу
#include &lt;math.h&gt; const double eps = 0.001; ///&lt; желаемая точность /// N - размерность...

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив структур. Записываю...

Необработанное исключение по адресу 0x00105FD7 в Динамические структуры: 0xC0000005: нарушение прав доступа при чтении по адресу 0xCDCDCE09
Необработанное исключение по адресу 0x00105FD7 в Динамические структуры.exe: 0xC0000005: нарушение...


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

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

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