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

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

Войти
Регистрация
Восстановить пароль
 
unnamed
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 4
#1

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

17.07.2014, 14:24. Просмотров 242. Ответов 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");
}
Печально, что раньше как-то делал уже ведь такую штуку и всё нормально было, а тут хоть об стенку бейся. Уверен, ошибка глупая, но найти её что-то не получается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2014, 14:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при динамическом выделении двумерного массива char (C++):

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

Ошибка при динамическом выделении памяти - C++
Я не понимаю почему, но почему-то пример по динамическому выделению памяти, взятый с этой веб-страницы: http://cppstudio.com/post/9555/...

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

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

Cin.getline() не работает при динамическом выделении памяти - C++
Почему в таком коде cin.getline() работает не так как надо? Если очистить поток, то будет все нормально. #include &lt;iostream&gt; using...

Выравнивание при динамическом выделении памяти под массив - C++
Добрый вечер. Для того, чтобы выделить память под массив динамически и выровнять указатель по 16 байтам, в разных ОС существуют разные...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
zss
Модератор
Эксперт С++
6359 / 5923 / 1920
Регистрация: 18.12.2011
Сообщений: 15,222
Завершенные тесты: 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;
unnamed
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 4
17.07.2014, 15:15  [ТС] #3
Тьфу, я ИДИОТ!!!
Спасибо за ответ, за нуль я действительно что-то забыл, но проблема оказалась в другом.
Я объявил в конструкторе ЛОКАЛЬНУЮ переменную вместо инициализации поля класса)))
И еще удивлялся, почему при выходе из конструктора в мэйне у объекта нужное мне поле имеет адрес 0х000000.
Пол дня убил на этот чёртов массив, а проблема-то действительно была в моей непроходимой криворукости.
Спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2014, 15:15
Привет! Вот еще темы с ответами:

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

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

При обращении к индексу двумерного массива char программа вылетает с ошибкой - C++
Программа вылетает с ошибкой на 66й строке. Почему?((( // Task_1.cpp : Defines the entry point for the console application. // ...

Вопрос о динамическом выделении памяти - C++
Доброго времени суток всем. у меня вопрос к работе следующего кода: delete values; // Удаляем массив из кучи ...


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

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

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