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

Ошибка при динамическом выделении двумерного массива char

17.07.2014, 14:24. Просмотров 290. Ответов 2
Метки нет (Все метки)

Ребята, спасите-помогите. Нужно выделить двумерный массив типа char для игрового поля.
Выделяю вроде бы как положено, но получаю рантайм ошибку при запуске.
Уже больше двух часов парюсь с этим массивом, ума не приложу где может быть ошибка. Перепроверил всё десятки раз.

Код конструктора, в котором выделяется массив:

C++
1
2
3
4
5
6
7
8
9
10
11
12
GameField::GameField(size_t _sizeX, size_t _sizeY, char _markerP1, char _markerP2)
: mySizeX(_sizeX), mySizeY(_sizeY), markerP1(_markerP1), markerP2(_markerP2)
{
    char** myField = new char*[mySizeX];
    
    for (size_t x = 0; x < mySizeX; ++x)
    {
        myField[x] = new char[mySizeY + 1];
        for (size_t y = 0; y < mySizeY; ++y)
            myField[x][y] = ' ';
    }
}
Отладочный код в main:

C++
1
2
3
4
5
6
7
8
9
10
11
void main()
{
    GameField mainField(3, 3, 'X', 'O');
    char** fld = mainField.getField();
 
    for (int x = 0; x < 3; x++)
    for (int y = 0; y < 3; y++)
        std::cout << fld[x][y] << std::endl;
 
    system("pause");
}
Печально, что раньше как-то делал уже ведь такую штуку и всё нормально было, а тут хоть об стенку бейся. Уверен, ошибка глупая, но найти её что-то не получается.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2014, 14:24
Ответы с готовыми решениями:

Ошибка при динамическом выделении памяти
почему у меня возникет ошибка вот тут struct TOVAR *New = new struct TOVAR; пишит недопустимый...

Ошибка при динамическом выделении памяти
Я не понимаю почему, но почему-то пример по динамическому выделению памяти, взятый с этой...

Ошибка на динамическом выделении памяти
программа ниже безупречно выполнялась под С++Builder 6.0 (консольное приложение). При переводе ее...

Выдаёт ошибку при динамическом выделении памяти
В строчке cout &lt;&lt; &quot;Значение по адресу &quot; &lt;&lt; p &lt;&lt; &quot; равно: &quot; &lt;&lt; *p &lt;&lt; endl; ...

Создание исключения при динамическом выделении памяти
Вот код из учебника в нем мне все понятно. #include&lt;iostream&gt; #include&lt;cstdlib&gt; //exit()...

2
zss
Модератор
Эксперт С++
8102 / 7239 / 4505
Регистрация: 18.12.2011
Сообщений: 19,144
Завершенные тесты: 1
17.07.2014, 14:39 2
Цитата Сообщение от unnamed Посмотреть сообщение
for (size_t y = 0; y < mySizeY; ++y)
myField[x][y] = ' ';
После этого добавляем терминальный нуль
C++
1
myField[x][mySizeY] = 0;
0
unnamed
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 4
17.07.2014, 15:15  [ТС] 3
Тьфу, я ИДИОТ!!!
Спасибо за ответ, за нуль я действительно что-то забыл, но проблема оказалась в другом.
Я объявил в конструкторе ЛОКАЛЬНУЮ переменную вместо инициализации поля класса)))
И еще удивлялся, почему при выходе из конструктора в мэйне у объекта нужное мне поле имеет адрес 0х000000.
Пол дня убил на этот чёртов массив, а проблема-то действительно была в моей непроходимой криворукости.
Спасибо за помощь!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2014, 15:15

Cin.getline() не работает при динамическом выделении памяти
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все...

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

Использование конструктора базового класса при динамическом выделении памяти
Есть базовый класс, от него наследуются несколько классов, свой конструктор я определил в базовом...


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

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

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