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

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

17.07.2014, 14:24. Просмотров 272. Ответов 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 (консольное...

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

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

2
zss
Модератор
Эксперт С++
7259 / 6704 / 4244
Регистрация: 18.12.2011
Сообщений: 17,705
Завершенные тесты: 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

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

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

В чем отличие двумерного массива типа char от массива указателей на char?
В чем отличие двумерного массива типа char и массива указателей на char ?


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

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

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