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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 59, средняя оценка - 4.95
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
#1

Нарушение прав доступа при записи по адресу - C++

05.08.2013, 15:13. Просмотров 8587. Ответов 5
Метки нет (Все метки)

Здрасте

Такая задача, нужно генерировать 2d массив с входных параметров(размер).

Я делаю так:

Обьявление
C++
1
2
3
4
5
private:
 
    int** field;
    size_t max_X;
    size_t max_Y;
Попытка инициализации(метод вызывается с конструктора):
C++
1
2
3
4
5
6
7
void Game::fieldInitialize()
{
    for(int i = 0 ;i < max_X; ++i)
    {
        *field=new int[max_Y];
    }
}
Пишет такую ошибку: Нарушение прав доступа при записи по адресу.
Объясните пожалуйста, в чем причина
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.08.2013, 15:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нарушение прав доступа при записи по адресу (C++):

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

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

Нарушение прав доступа при записи по адресу - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; struct worker { char *fio; char *dolzh; ...

Нарушение прав доступа при записи по адресу - C++
Функция не дописана. Исключение находит в этой begin-&gt;elem.arrint = s; нарушение прав доступа при записи по адресу 0xCDCDCDCD. Работаю...

Нарушение прав доступа при записи по адресу - C++
Форум предварительно прочитал, но нужной информации не нашел. :( Суть задания: заполнить с клавиатуры двухмерный массив из целых...

Нарушение прав доступа при записи по адресу - C++
Нужно просуммировать двухмерный динамический массив. Если я ввожу a1 &gt;= b1 то программа работает, а если ввожу a1&lt; b1 например 1,3...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
05.08.2013, 15:22 #2
Наверное потому, что Вы пытаетесь разыменовать неинициализированный указатель field.
0
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
05.08.2013, 15:30  [ТС] #3
Цитата Сообщение от Kseon12 Посмотреть сообщение
*field=new int[max_Y];
Забыл добавить;
C++
1
++field;
Добавлено через 1 минуту
Цитата Сообщение от Fyret Посмотреть сообщение
Наверное потому, что Вы пытаетесь разыменовать неинициализированный указатель field.
Разыменовывание разве не создание указателя на объект ?
Я же его собственно и пытаюсь инициализировать(как бы)

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
    int** ary = new int*[max_X];
    
    for(int i = 0; i < max_X; ++i)
    {
        ary[i] = new int[max_Y];
    }
    field = ary;
Вот таким способом оно работает, но почему ?
Я же делал все тоже самое, только без "посредника"
0
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
05.08.2013, 15:35 #4
Цитата Сообщение от Kseon12 Посмотреть сообщение
Разыменовывание разве не создание указателя на объект ?
Нет, откуда такая мысль?

Цитата Сообщение от Kseon12 Посмотреть сообщение
Я же делал все тоже самое, только без "посредника"
Не то же самое. То же самое без посредника:
C++
1
2
3
4
5
6
field = new int*[max_X];
    
for(int i = 0; i < max_X; ++i)
{
    field[i] = new int[max_Y];
}
1
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.08.2013, 15:39 #5
C++
1
int** field; // Указатель не инициализирован
C++
1
*field=... ; // Попытка записать не пойми куда
1
Kseon12
61 / 3 / 1
Регистрация: 22.12.2011
Сообщений: 99
05.08.2013, 15:46  [ТС] #6
Цитата Сообщение от Fyret Посмотреть сообщение
C++
1
field = new int*[max_X]
Я понял ошибку свою, я пытался обратится через указатель первого измерения, который не создал, ко второму.

Tulosba, я понял почему " не пойми куда "

Tulosba,Fyret - благодарен за помощь
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2013, 15:46
Привет! Вот еще темы с ответами:

Нарушение прав доступа при записи по адресу - C++
Будьте добры подскажите, есть занятная функция которая подгружает из файлика данные, Необработанное исключение по адресу 0x50C6BBC2...

Нарушение прав доступа при записи по адресу - C++
Как исправить ошибку?? Первый этап обработки исключения по адресу 0x0F484AF5 (msvcr110d.dll) в ConsoleApplication16.exe: 0xC0000005:...

Нарушение прав доступа при записи по адресу 0xCDCDCDCD - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void create(int**, int, int); void tp(int **, int, int **, int); ...

Нарушение прав доступа при записи по адресу 0xCDCDCDCD - C++
возникла такая вот ошибка: Вызвано исключение по адресу 0x0F2C398A (sfml-graphics-d-2.dll) в JustPlatformer.exe: 0xC0000005: нарушение...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.08.2013, 15:46
Ответ Создать тему
Опции темы

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