5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|||||||||||
1 | |||||||||||
Вылет при записи структуры в файл [C++]04.01.2012, 02:59. Показов 1133. Ответов 16
Метки нет (Все метки)
Здраствуйте!
Я совсем недавно начал изучать C++. конечно же, написал калькулятор, и теперь решил написать небольшую игру-рогалик с псевдослучайной генерацией мира. Проблема в чём - всё компилируется отлично, но при выполнении записи x[i].mapping в файл программа вылетает. Вот мои наработки : Classes.h
0
|
04.01.2012, 02:59 | |
Ответы с готовыми решениями:
16
Ошибка при записи структуры в файл Кракозябры вместо слов и цифр при записи структуры в файл Ошибка при чтении записи строки и вылет в другой код Вылет программы при попытке открыть файл |
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
04.01.2012, 03:05 | 2 |
29 стока.
for(i = 0; i < 2056; i++) Ваше условие (2056) всегда истина.
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|
04.01.2012, 03:11 [ТС] | 3 |
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
04.01.2012, 03:21 | 4 |
А память кто выделять будет под этот самый mapping?
1
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||
04.01.2012, 03:22 | 5 | |||||
У вас в структуре есть указатель на символ, а Вы не выделяя память пишите туда данные
Писать программу на 200 строк где переменные названы, x, xx, a,b,i да ещё и использовать goto - зло и чтобы теперь помочь вам найти ошибку нужно потратить много времени что будет отпугивать форумчан.
1
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
||||||
04.01.2012, 03:27 [ТС] | 6 | |||||
Извините, я просто совсем новенький в C++
А не подскажете, как точно надо выделять память? Нечто вроде
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||
04.01.2012, 03:41 | 7 | |||||
volchonokilli, это же почему не помогает?
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
04.01.2012, 03:50 | 8 |
Может быть десяти символов не хватает(учитывая завершающий ноль)?
Gepar, сравни адреса, на которые у тебя указывает mapping до и после присвоения в 13.
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
||||||
04.01.2012, 03:54 [ТС] | 9 | |||||
Classes.h не изменял, вот измененный отрезок из Game.cpp
Программа продолжает сбоить.
0
|
1066 / 583 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
|
||||||
04.01.2012, 04:08 | 10 | |||||
Вынеси
И если ты выделяешь память то обязательно ее нужно очистить с помощью delete
1
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
04.01.2012, 04:09 | 11 |
Сравнил, всё тот же, в моём случае можно обойтись без strcpy если Вы об этом.
У вас там целая куча всякой всячины и странных переменных, Вы бы оттестировали свой класс пытаясь для начала заставить его работать печатая данные на экран, потом попытались бы записать один объект вашей структуры в файл, а потом уже целый массив объектов пробовали бы экспортировать в файл, это хорошо что Вы сразу ещё интерфейс не прикрутили и лишь потом не заметили что структура то не рабочая ...
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|
04.01.2012, 04:10 [ТС] | 12 |
Тогда придется убирать [i], а без него компилятор не воспринимает х, как элемент структуры.
Всё работает кроме самого mapping. То есть, программа каждый раз сбоит при попытке отоображения или записи, например, wall.mapping, которое равно "\xDB". При этом присваивание проходит без сбоев.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
04.01.2012, 04:17 | 13 |
Ага, что удивительно, ведь он создал 2056 объектов своего класса, с чего это он память тогда аж 2056 раз выделяет, первому выдал и хватит. Давайте как у нас в обществе поступать: очередь на квартиру в 2056 человек, а мы первому дадим и всё
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
04.01.2012, 04:28 | 14 |
Это очень странно, ведь адрес(который присваивается) у сроки совсем не тот, что у выделенной памяти.
volchonokilli, думаю, проблема в том, что cin пытается запихнуть в mapping куда больше, чем можно. input.txt в студию Добавлено через 1 минуту Это уже после того, как память была выделена?
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|
04.01.2012, 04:28 [ТС] | 15 |
input.txt размер - 0 байт.
И да, у меня там нету cin Да.
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|
22.01.2012, 01:50 [ТС] | 17 |
Проблема решена.
Оказалось, что структура записывается немного другим образом (нечто вроде in((char*)wall,sizeof(unit)) ).
0
|
22.01.2012, 01:50 | |
22.01.2012, 01:50 | |
Помогаю со студенческими работами здесь
17
Вылет при попытке открыть типизированный файл для чтения Схема записи структуры в файл Нарушение прав доступа при записи по адресу 0х00000000 при добавлении элемента структуры Как записать в бинарный файл структуры записи из текстового файла? Проверка на совпадение последней и следующей записи при записи в файл Создать двоичный файл, содержащий записи следующей структуры для хранения информации об авиарейсе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |