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

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

Восстановить пароль Регистрация
 
unnamed
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 4
17.07.2014, 14:24     Ошибка при динамическом выделении двумерного массива char #1
Ребята, спасите-помогите. Нужно выделить двумерный массив типа 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");
}
Печально, что раньше как-то делал уже ведь такую штуку и всё нормально было, а тут хоть об стенку бейся. Уверен, ошибка глупая, но найти её что-то не получается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2014, 14:24     Ошибка при динамическом выделении двумерного массива char
Посмотрите здесь:

C++ Вопрос о динамическом выделении памяти
C++ ошибка на динамическом выделении памяти
Выравнивание при динамическом выделении памяти под массив C++
C++ Использование конструктора базового класса при динамическом выделении памяти
Создание исключения при динамическом выделении памяти C++
C++ При обращении к индексу двумерного массива char программа вылетает с ошибкой
C++ В чем отличие двумерного массива типа char от массива указателей на char?
Cin.getline() не работает при динамическом выделении памяти C++

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

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

Текущее время: 20:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru