|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.03.2012, 13:08 | #1 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Проблема с _gcvt (возможно), задача не на пару минут
Сегодня столкнулся с удивительной для меня проблемой..
Я, написал программу и по шагам, отдебажив и перепробовав все варианты, с облегчением вздохнул - всё работает, но не тут-то было. Оказывается все работает, если (к примеру, поставить breakpoint на конец главной функции, а именно на return 0, он все верно, без ошибок(!) выполняет(любое другое место - все верно)) Но, когда я запускаю программу через Ctrl + f5, меня тут же "критует", выбрасывает с необработанным исключением. И больше никакой информации. Я даже проверить место, где ошибка не могу (я только начинающий, поэтому заглянуть в скомпилинный код и так далее - не вариант, не разберусь) Вроде как через comment/uncomment я выявил виновника: Код:
для ясности приведу всю функцию полностью (КОД ЧИТАТЬ НЕ ОБЯЗАТЕЛНО, Т.К. ОЧЕНЬ ВЕЛИК) я его привел, чтобы было ясно какие типы в аргументах и к чему представлена сея функция (на вход идет строка, в польской нотации) Код:
Я просто в смятении, прошу помощи. Последний раз редактировалось Elloriane; 20.03.2012 в 13:12. |
20.03.2012, 13:09 | #2 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Текст был слишком длинный.
вот создание двух динамических строк Код:
|
20.03.2012, 13:27 | #3 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Бросилось в глаза из самого начала:
Код:
Также выделяя память, вы ее не освобождаете через free.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
20.03.2012, 13:29 | #4 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
забыл про ошибку с памятью, в процессе исправления, отпишусь как доделаю
только небольшой вопрос : space[1] = 0 это же несимвол - я стираю возможный мусор после " "? Хм, забавно, но как раз во время вызова функции free() для 4 из 5 динамических строк вылезают различного рода ошибки, разбираюсь И ошибка рода (Heap Corruption Detected) Я правильно понял, что программа узнала о том что я вылжу за пределы массива уже после того как я это сделал и обнулил строки? но что любопытно появляется ошибка совершенно другого рода : повреждение кучи при очистке stringcopy (ошибка подобного рода (только без дополнительных данных для диагностики) http://www.cyberforum.ru/cpp-beginners/thread54226.html) тогда у меня вопрос, я вообще могу так делать:? Код:
Код:
Код:
Последний раз редактировалось ACE Valery; 20.03.2012 в 20:36. |
20.03.2012, 14:03 | #5 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Elloriane, здесь вам все-таки не твиттер. Либо пишите все сразу в одном посте, либо используйте кнопку редактирования сообщения в нижнем правом углу.
Что касается нуля - это хоть и не символ в привычном понимании, но компилятору, строго говоря, вообще пофиг, что все эти буковки являются символами. Короче говоря, ноль - это терминирующий символ, он является элементом данных и нельзя про него забывать. То, что вы поставили его в конец строки - не заставляет что-то там стереть (произвести в момент присвоения какие-то активные действия), а всего лишь будет указывать, что на этом символе необходимо прекращать чтение из памяти, и дальше будет уже что-то не относящееся к данной текстовой строке.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
20.03.2012, 14:14 | #6 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
Извините за такой поток, если Вы подскажете, как удалять сообщения - я подправлю.
Про символ - понял, исправил. Ошибка при free(copyString) осталась, как я понимаю - она (динамическая строка) проблема, по которой ctrl+f5 не работает? т.к. вроде он выявляет то, что я вылажу за границу после выполнения функции |
20.03.2012, 20:37 | #7 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
В следующий раз пользуйтесь правкой предыдущего сообщения, чтоб добавить что-то. Удалять и объединять сообщения форумчане сами не могут.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
20.03.2012, 21:31 | #8 |
Пользователь
Регистрация: 19.02.2012
Сообщений: 60
|
ACE Valery, я понял
Проблема больше не актуальна - решил переписать с нуля - все работает теперь |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача на Паскале(возможно с указателями) | pahann | Помощь студентам | 1 | 31.01.2011 15:51 |
Возможно проблема в видеокарте или материнке | Иллея | Компьютерное железо | 20 | 19.12.2009 22:32 |
часы показывают m часов, n минут и k секунд. Каковы будут показатели часов через p часов, q минут и r сек | Паскалька^^ | Помощь студентам | 3 | 11.10.2009 19:41 |
Проблема в Delphi. Возможно, на потоки. | Jean-Esther | Помощь студентам | 2 | 21.02.2009 22:32 |
Задача паскаля!Возможно надо что то добавить??? | Impario | Помощь студентам | 7 | 29.12.2008 14:50 |