Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
#1

Глюк системы или кривой код? - C++

18.01.2012, 16:44. Просмотров 2286. Ответов 15
Метки нет (Все метки)

Программа должна быть сдана уже завтра, но работать нормально она отказывается. Сделана и тестируется через VS 2008. Проблема такова:

При запуске программы в режиме "запуска без отладки" выполняет все действия, кроме нормального чтения из файла (бинарного). Есть 2 тестовых файла, один запускается (test.bin), второй - нет(test2.bin), вылетает системная ошибка, что мол приложение не отвечает и т.д.

Естественно, я начал отладку, запустил в режиме "отладки", но чудеса, программа работает как часы, и хоть 100 раз загружай второй файл, он будет загружать и считывать данные правильно.

Господа, присяжные заседатели, помогите найти проблему.


Вот такие данные об ошибке предоставляет система:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Сигнатура проблемы:
  Имя события проблемы: APPCRASH
  Имя приложения:   kursach3.exe
  Версия приложения:    0.0.0.0
  Отметка времени приложения:   4f16bb4d
  Имя модуля с ошибкой: ntdll.dll
  Версия модуля с ошибкой:  6.1.7601.17725
  Отметка времени модуля с ошибкой: 4ec49b60
  Код исключения:   c0000005
  Смещение исключения:  00055ead
  Версия ОС:    6.1.7601.2.1.0.256.48
  Код языка:    1049
  Дополнительные сведения 1:    0a9e
  Дополнительные сведения 2:    0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:    0a9e
  Дополнительные сведения 4:    0a9e372d3b4ad19135b953a78882e789

Вот тут солюшн, там вроде основное прокомментировано все...
0
Вложения
Тип файла: rar kursach3.rar (3.57 Мб, 36 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 16:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Глюк системы или кривой код? (C++):

Кривой код - C++
Задание: Дана последовательность из n символов. Выяснить, встречается ли в данной последовательности группа из трёх стоящих рядом точек. ...

Глюк или ? - C++
я так понимаю, можно "остановить " консоль(не дать закрыться) разными способами кто как делает пишу я себе программу, ставлю как всегда...

Глюк компиляторов или виноват компьютер? - C++
Здравствуйте, меня мучает такой вопрос: мой ноут не может нормально скомпилировать ни одной программы, пробовала 2 компилятора под c++, а...

Глюк печатания и глюк порчи константы - C++
Дамы и господа! Я столкнулся с двумя глюками, которые не нашёл в списке распространённых ошибок. 1) При попытке распечатать массив...

Как получить исходный код *.exe или отредактировать его исполняемый код? - C++
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или хотя-бы отредактировать код, только не...

перевести код на С++ или написать свой код - C++
Задано предложение. Составить программу вывода на экран слов, в которых первая и последняя буквы совпадают. program Project1; ...

15
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
18.01.2012, 17:18 #2
скорее кривой код
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
18.01.2012, 17:29  [ТС] #3
Цитата Сообщение от retmas Посмотреть сообщение
скорее кривой код
Спасибо за очень содержательный ответ, он мне очень помог!
Иногда лучше промолчать, да?
0
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
18.01.2012, 17:34 #4
иногда лучше пробовать сначала использовать поиск, да?
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:35 #5
Цитата Сообщение от Akkoks Посмотреть сообщение
Господа, присяжные заседатели, помогите найти проблему.
- думаю из-за этих ворнингов где то и выкидывает тебя(в Debug тебе "студия помогает", так что не особо обольщайся если в режиме отладки всё работает) Баги и проявляются через проигнорированные ворнинги(мне так первый вообще ненравится - ОЧЕНЬ, как можно писать функцию не все части которой возвращают значение???Уверен на 90% ошибка в этом)

Log Dubug-a
--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.cpp
methods.cpp
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\list.h(187) : warning C4715: 'list::search' : not all control paths return a value
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(118) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(121) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(128) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(215) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(222) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(311) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(318) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
Linking...

main.exe - 0 error(s), 8 warning(s)
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
18.01.2012, 17:41  [ТС] #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- думаю из-за этих ворнингов где то и выкидывает тебя(в Debug тебе "студия помогает", так что не особо обольщайся если в режиме отладки всё работает) Баги и проявляются через проигнорированные ворнинги(мне так первый вообще ненравится - ОЧЕНЬ, как можно писать функцию не все части которой возвращают значение???Уверен на 90% ошибка в этом)

Log Dubug-a
--------------------Configuration: main - Win32 Debug--------------------
Compiling...
main.cpp
methods.cpp
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\list.h(187) : warning C4715: 'list::search' : not all control paths return a value
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(118) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(121) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(128) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(215) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(222) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(311) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
d:\ìîè äîêóìåíòû\downloads\kursach3 (1)\kursach3\kursach3\methods.cpp(318) : warning C4541: 'dynamic_cast' used on polymorphic type 'class object' with /GR-; unpredictable behavior may result
Linking...

main.exe - 0 error(s), 8 warning(s)
Если вы не заметили, то там обработка исключений, и те случаи, при которых значение не возвращается, обрабатываются исключением и игнорируются в дальнейшем, с этим полный порядок! я объяснил конкретно, что проблема в загрузке файла, мб и правда явно приведение шалит, но у меня таких ворнингов не выдает вообще... У меня только про устаревшие вызовы функций...
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:42 #7
Предлагаю "залатать по быстрому"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Elem *search(int num) //ïîèñê ýëåìåГ*ГІГ* ГЇГ® ëîãèñåñêîìó Г*îìåðó
{
    int i=0;
    Elem *t=NULL;
    if(num==0) 
        return head;
    if(num==size-1) 
        return end;
    try
    {
        if(num<0||num>size-1) 
            throw "Invalid number, press any key...";
        else 
        {
            if(num!=0&&num!=size-1)
            {
            
                t=head;
                while(t!=NULL && i<num)
                {
                    t=t->next;
                    i++;
                }
                return t;
            }
        }       
    }
    catch (char *s)
    {
        cout<<s; getch(); cout<<endl;
    }   
    return t;
}
0
soon
2545 / 1310 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.01.2012, 17:44 #8
Akkoks, попробовал скомпилировать через mingw. При чтении test2 и test3 виснет, при чтении test ничего не происходит(заново менюшка выводится). exe прикладываю, посмотрите, может так и должно быть.
0
Вложения
Тип файла: rar main.rar (126.6 Кб, 8 просмотров)
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
18.01.2012, 17:51  [ТС] #9
Все, нашел в чем ошибка... Писал ночью и забыл кое что... во всем виноваты потоки.

C++
1
2
3
4
5
6
7
8
9
10
11
object *Int::readbin(ifstream &ifs){        // Чтение из двоичного файла
    ifs.read((char*)&date,sizeof(int)); //по глупости писал sizeof(*this);
    if (date==0) return 0;
    else  return new Int(date);
}
 
object *Float::readbin(ifstream &ifs){      // Чтение из двоичного файла
    ifs.read((char*)&date,sizeof(float)); //sizeof(*this); -ошибка
    if (date==0) return 0;
    return new Float(date);
}
Добавлено через 5 минут
Цитата Сообщение от soon Посмотреть сообщение
Akkoks, попробовал скомпилировать через mingw. При чтении test2 и test3 виснет, при чтении test ничего не происходит(заново менюшка выводится). exe прикладываю, посмотрите, может так и должно быть.
При чтении test он просто считывает и все, а там дальше нужно просматривать коллекцию)
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.01.2012, 17:55 #10
Akkoks, уважаемый
Цитата Сообщение от Akkoks Посмотреть сообщение
Если вы не заметили, то там обработка исключений, и те случаи, при которых значение не возвращается, обрабатываются исключением и игнорируются в дальнейшем, с этим полный порядок!
- у меня к тебе вопрос, что вернёт функция если попадём в ветвь исключения в catch???На экране напишет что-то. а программа дальше как, блок вызвавший search - что в него вернёшь???Ведь после getch ни стопа для алгоритма ни exit нет.
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
18.01.2012, 18:59  [ТС] #11
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Akkoks, уважаемый
- у меня к тебе вопрос, что вернёт функция если попадём в ветвь исключения в catch???На экране напишет что-то. а программа дальше как, блок вызвавший search - что в него вернёшь???Ведь после getch ни стопа для алгоритма ни exit нет.
Вы абсолютно правы, спасибо.
Теперь мне нужны коды для клавиш "влево" "вправо" "верх" "вниз" для getch(); не поможете?)

Добавлено через 2 минуты
И опять же не надо... Действительно, яндекс находит все...

Добавлено через 44 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Предлагаю "залатать по быстрому"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Elem *search(int num) //ïîèñê ýëåìåГ*ГІГ* ГЇГ® ëîãèñåñêîìó Г*îìåðó
{
    int i=0;
    Elem *t=NULL;
    if(num==0) 
        return head;
    if(num==size-1) 
        return end;
    try
    {
        if(num<0||num>size-1) 
            throw "Invalid number, press any key...";
        else 
        {
            if(num!=0&&num!=size-1)
            {
            
                t=head;
                while(t!=NULL && i<num)
                {
                    t=t->next;
                    i++;
                }
                return t;
            }
        }       
    }
    catch (char *s)
    {
        cout<<s; getch(); cout<<endl;
    }   
    return t;
}

Опять же, придется везде править код, потому что для очень многих функций недопустимо значение найденного элемента NULL; Я хотел сделать через goto; но компилятор не видит меток, поставленных в мейне... что делать?=)
0
NoMasters
Псевдослучайный
1905 / 1116 / 77
Регистрация: 13.09.2011
Сообщений: 3,169
18.01.2012, 19:07 #12
Цитата Сообщение от Akkoks Посмотреть сообщение
goto
В плюсах? Исключения же
0
Akkoks
0 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 31
18.01.2012, 19:13  [ТС] #13
Цитата Сообщение от NoMasters Посмотреть сообщение
В плюсах? Исключения же
Я забыл уже как делать=(
0
Melkor
30 / 30 / 1
Регистрация: 15.12.2011
Сообщений: 108
18.01.2012, 19:38 #14
вернецо t, причем значение у него будет NULL. мне только непонятно накой черт тут исключения ???
0
NoMasters
Псевдослучайный
1905 / 1116 / 77
Регистрация: 13.09.2011
Сообщений: 3,169
18.01.2012, 19:42 #15
Melkor, я отвечал Akkoks, тред не читал...
0
18.01.2012, 19:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2012, 19:42
Привет! Вот еще темы с ответами:

Параллельный код решения системы - C++
Доброго вечера, мастера нулей и единиц! Преподаватель дал задание - сам не разберусь никак. Может кто чего подскажет или поможет. ...

прога, которая по нажатой клавише выводит ascii - код символа это клавиши или scan - код самой клавиши. - C++
написать программу, которая по нажатой клавише выводит ascii - код символа этой клавиши или scan - код самой клавиши. осуществите вывод в...

Переделать код для 400-ичной системы счисления - C++
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; #include &quot;conio.h&quot; using namespace std; class chisla ...

Решение системы СЛАУ одним из методов Гаусса: исправить код - C++
Было задание решение системы СЛАУ одним из методов Гауса.(матрицы до 5 на 5). Код написал,работает вроде программа верно,но постоянно...


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

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

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