| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > написал программу FILE и т.д |
| Автор: apook 4.1.2007, 14:11 | ||
| ажет ли мне кто нибудь почему программа не работает как надо, а то я запарился уже компелировать. Программа для замены в текстовом файле На bcc32 компелирую: прога работает, но ... 1. если я увеличиваю слово "на которое меняю" то программа нач инает работать через раз(точнее просто зависает), причем чем дли нее слово "на которое меняю" тем меньше шансов что все про йдет как надо, но даже при вылете можно обнаружить что задача выполнена. 2. Смотри пункт 1 На tсс компелирую: прога не работает, но ... 1. Тот-раз работала. не помню че сделал что перестала. 2. Она все-же коипилируется без ошибок но звисает сразу 3. Убрав из кода все(именнно все) free( ); прога выполнялась но в конце было сообщение что-то там Null Pointer Assignment, но опять-же больше не повторяется Я подозреваю malloc realloc особенно второй но не в курсе что там за нюансы, да и по мелочи какие-то косячки
|
| Автор: _hunter 4.1.2007, 14:23 |
| ну так берем отладчик и вдумчиво проходим по коду. операцию (в случае необходимости) повторить... |
| Автор: apook 4.1.2007, 15:30 |
| Если честно не умею пользоваться отладчиком,ведь я недавно программирую и чисто для себя... Вообще просто пошагово прохжу , с остановками, по коду (миниотладка). Null Pointer Assignment меня уже не первый раз одо левает. Пустой указатель. Причем загадочные причины. |
| Автор: Kuvaldis 4.1.2007, 15:39 | ||||
apook,
ИМХО, нужно так:
ты ж выделяешь память только под 2 байта и потом работаешь с памятью под long, которая не была выделена... |
| Автор: _hunter 4.1.2007, 15:39 |
| не помню как это выгдядело в турбо сях, но помню точно что watch'и там были -- вот туда позагоняй интересующие переменные и посмотри на каком шаге теряеш указатель... |
| Автор: apook 4.1.2007, 18:08 |
| поменял x=( long * ) malloc ( 2 ); на x=( long * ) malloc ( 2 * sizeof(long) ); комиле ин БСС32 и не мог нарадоваться как все работает, пока не компилировал в tcc там все как раньше. Так значит надо и str=( char * ) malloc ( 100 * sizeof(char) ) поменять что-ли. В примерах пишут str=( char * ) malloc ( 20 ) из того-же нелпа? С дебаггингом напряг, я вообще не смог его запустить. Запускаю всякие watch -и а там что-то вроде process not in assemble это в Buildere где там кнопка на которой написано Debug блин. |
| Автор: Kuvaldis 4.1.2007, 18:24 |
| apook, тискаем кнопку F8... и будет тебе счастье... (пошаговая трассировка) а вообще на наличие ошибок и проверку логики лучше всего отвечает компиляция в Visual Studio |
| Автор: apook 4.1.2007, 18:39 |
| сейчас подставил и sizeof(char) заработало и в Turbo благодарю Kuvaldis -а Пошагово громко сказано просто getch(); а перед этим printf( переменная ) |