Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
1

Нарушение прав доступа в двумерном массиве

02.12.2017, 12:58. Показов 1031. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Я писал программу и наткнулся на проблему. Дело в том, что в этом фрагменте:
C++
1
2
3
4
5
6
7
8
9
10
11
Field = new(new char[41])char*[41];      
 
        for (int i = -20; i < 20; i++)
        {
            for (int j = -20; j < 20; j++)
            {
                Field[i + 20][j + 20] = '1';   //'1' - для примера
                out << Field[i + 20][j + 20] << " ";
            }
            out << "\n";
        }
происходит нарушение прав в массиве "Field", я немного не вникаю, почему, ведь здесь:
C++
1
2
3
4
5
6
7
8
9
        X = new float[41];
        Y = new float[41];
        for (int i = -20; i < 20; i++)
        {
            X[i + 20] = i;
            float &rX = X[i + 20];
            Y[i + 20] = this->Format(_Type, rX, SIZE);
            out << Y[i + 20] << " ";    //Вывод для тестирования
        }
все в порядке, возможно потому что "X" и "Y" - одномерные. В общем помогите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2017, 12:58
Ответы с готовыми решениями:

Нарушение прав доступа в многомерном массиве
Написал функцию, которая находит в массиве элемент, который встречается в нем чаще остальных. Вот...

Нарушение прав доступа
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. //get - seletor,...

Нарушение прав доступа
Выдает вот это Необработанное исключение в &quot;0x000d1e05&quot; в &quot;зпр3.exe&quot;: 0xC0000005: Нарушение прав...

Ошибка: Нарушение прав доступа
Здравствуйте, пишу программу для минимизации канонических выражений (сумм минтермов). Проблема...

25
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
02.12.2017, 17:09 21
Author24 — интернет-сервис помощи студентам
TRam_, в данном случае я счел константу нагляднее переменной. В реальности лучше будет неявная передача из соответствующих функций.
C
1
2
3
4
5
void some_func( int *_arr, uint8_t size){
#define arr(x, y) _arr[ (x) + size*(y) ] /*обратите внимание что size не передается в макрос, а неявно берется из аргументов функции*/
  arr(1,1) = arr(2,2);
#undef arr
}
0
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
02.12.2017, 18:05  [ТС] 22
Спасибо всем, теперь все работает!
0
1467 / 1008 / 456
Регистрация: 30.10.2017
Сообщений: 2,798
02.12.2017, 18:06 23
pavel2210057, покажете код?
0
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
03.12.2017, 13:45  [ТС] 24
Во-первых он не дописан, а во-вторых у него длина более 300 строк, так что думаю, вы не захотите его читать.
0
1467 / 1008 / 456
Регистрация: 30.10.2017
Сообщений: 2,798
03.12.2017, 14:27 25
pavel2210057, меня интересует только тот фрагмент, где была проблема.
0
61 / 28 / 24
Регистрация: 28.09.2017
Сообщений: 399
03.12.2017, 14:39  [ТС] 26
Ааа, ну тогда вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    void Draw(Type type, size_t SIZE)
    {
        Field = new char*[41];
 
        for (int i = 0; i < 40; i++)
            Field[i] = new char[41];
 
        for(int i = -20; i < 20; i++)
        {
            for (int j = -20; j < 20; j++)
            {
                if (type == Linear)          //и так далее...
1
03.12.2017, 14:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2017, 14:39
Помогаю со студенческими работами здесь

Нарушение прав доступа к записи
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;iomanip&gt; #include...

Указатель (нарушение прав доступа)
После того как заменяет символ выдает ошибку &quot; нарушение прав доступа&quot; (когда увеличиваю...

Нарушение прав доступа при записи
#include &lt;iostream&gt; void testfunc(char*&amp; test) { test = 's'; } int main() { char* test...

Нарушение прав доступа при чтении
Имею функцию такого плана: void RenameOldLabels() { USES_CONVERSION; string path,...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru