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

0xC0000005 или что делать дальше - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
10.10.2012, 11:31     0xC0000005 или что делать дальше #1
Достался по наследству СТАРЫЙ код, смесь С и С++, перенес его на VS 2008.
При запуске в режиме отладки возникает собственно ошибка, указанная в теме.

Cal stack:
ntdll.dll!776be3be()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!776be023()
msvcrt.dll!754a98cd()
> ENGINE.exe!_heap_alloc_dbg_impl(unsigned int nSize=52844184, int nBlockUse=0, const char * szFileName=0x00000000, int nLine=2130567168, int * errno_tmp=0x0018fb78) Line 497 + 0xc bytes C++
ENGINE.exe!std::_DebugHeapDelete<std::locale>(std::locale * _Ptr=0x03265698) Line 61 + 0x9 bytes C++
ENGINE.exe!std::basic_streambuf<char,std::char_traits<char> >::~basic_streambuf<char,std::char_traits<char> >() Line 43 + 0xc bytes C++
ENGINE.exe!std::basic_filebuf<char,std::char_traits<char> >::~basic_filebuf<char,std::char_traits<char> >() Line 120 + 0xf bytes C++
ENGINE.exe!std::basic_fstream<char,std::char_traits<char> >::~basic_fstream<char,std::char_traits<char> >() Line 901 + 0xb bytes C++
ENGINE.exe!std::basic_fstream<char,std::char_traits<char> >::`vbase destructor'() + 0x17 bytes C++
ENGINE.exe!READ_VANES(char * NAME_FILE=0x010506ae, VANE * & vane=0x016b1928, VAR & var={...}) Line 72 + 0x15 bytes C++
ENGINE.exe!COMPRESSOR::SET_VAR() Line 168 + 0x20 bytes C++
ENGINE.exe!COMPRES(COMPRESSOR & PC={...}) Line 31 C++
ENGINE.exe!main() Line 67 + 0x1b bytes C++
ENGINE.exe!__tmainCRTStartup() Line 266 + 0x19 bytes C
ENGINE.exe!mainCRTStartup() Line 182 C
kernel32.dll!7556339a()
ntdll.dll!776c9ef2()
ntdll.dll!776c9ec5()

Код функции на выходе, которой код падает:
C++
1
2
3
4
5
 int READ_VANES(char *NAME_FILE , VANE *&vane , VAR  &var)
{
    std::fstream datafile;
    return 1;
}
В коде убрал все комментарии, т.е. как я понял при инициализации переменной datafile, создается
буфер или даже два судя по стеку вызовов, которые перед выходом из функции подчищаются, но не правильно.

Вопрос собственно, что сделать в данном случае?
Может использовать чистый Си?

Заранее благодарен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2012, 11:31     0xC0000005 или что делать дальше
Посмотрите здесь:

что делать дальше? Класс Книга. C++
C++ подскажите что делать при вводимых данных 10 25 и 5 20 программа работает не правильно должна выводить 135 подскажите что делать
C++ Что мне делать или что надо знать перед тем как начать изучение яз.программирования С/С++?
что делать дальше? (сформировать функцию удаления первого элемента и нахождения максимального) C++
C++ Что дальше делать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
10.10.2012, 12:04     0xC0000005 или что делать дальше #2
Выложите весь код, так ничего нельзя сказать.

P.S.

datafile - это вовсе никакая не переменная, а объект класса fstream.
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
10.10.2012, 12:52  [ТС]     0xC0000005 или что делать дальше #3
Весь код выложить не получится, ибо его много, могу выложить ту часть, откуда идет вызов функции.
C++
1
2
3
4
5
6
7
8
9
10
11
if (HULLO ( "=" ))
{
   cout<<"READ_VANES=>>" ;     
   INOUT.put_word( var.title.READ_VANES ) ;
   goto SWITCH;
}
else 
{
    READ_VANES(var.title.READ_VANES , vane ,var) ; 
    goto SWITCH; 
 }
и дальше практически тоже самое 500 строк с условными операторами и goto.
функция HULLO:
C++
1
2
3
4
5
int HULLO(const char* object)
{
    extern inoutword IO;
    return (!_stricmp(object,IO.testword))? 1 : 0;
}
Этого будет достаточно?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
10.10.2012, 15:00     0xC0000005 или что делать дальше #4
т.е. сама функция именно такая и в ней больше нет никакого
другого кода?
C++
1
2
3
4
5
6
7
8
9
10
int READ_VANES(char *NAME_FILE , VANE *&vane , VAR  &var)
{
    std::fstream datafile;
 
   ///////////////////////////////
   // вот тут что-нибудь еще есть?
   ///////////////////////////////
 
    return 1;
}
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
10.10.2012, 15:39  [ТС]     0xC0000005 или что делать дальше #5
Нет, я уже писал об этом, там был код, который я закомментировал, и он не влияет на ошибку.
Если убрать std::fstream datafile; из кода, то работает как ни странно.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
10.10.2012, 15:41     0xC0000005 или что делать дальше #6
тестовый консольный проектик сделайте, напишите в нем такую функцию и посмотрите, так же будет себя вести? вроде код корректный и такого быть не должно.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
10.10.2012, 15:59     0xC0000005 или что делать дальше #7
Мелкософтовское отродье никогда не будет работать норм.
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
10.10.2012, 17:27  [ТС]     0xC0000005 или что делать дальше #8
Может ошибка возникать из-за сторонней либы?
В проекте есть две фортрановские либы, одна очень старая (grafor.lib grafor.dll), другая - нет, собрал на VS 2008 + PGI Fortran. Новая либа тянет за собой еще несколько фортрановских DLL.

И тестовая программа работает, а эта нет.
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
10.10.2012, 18:41     0xC0000005 или что делать дальше #9
Попробуйте прописать
C++
1
2
#include <fstream>
#include <ios.h>
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
10.10.2012, 19:41     0xC0000005 или что делать дальше #10
BFB, попробуй gcc
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
10.10.2012, 20:39  [ТС]     0xC0000005 или что делать дальше #11
Цитата Сообщение от algoritm256 Посмотреть сообщение
Попробуйте прописать
C++
1
2
#include <fstream>
#include <ios.h>
не помогло.
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
10.10.2012, 22:01     0xC0000005 или что делать дальше #12
по-возможности залейте на какой-нибудь файлообменник код
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
11.10.2012, 18:55  [ТС]     0xC0000005 или что делать дальше #13
Залить весь код к сожалению не могу, разве что предварительно уволившись.
Пробовал перенести проект в Eclipse CDT и прикрутить MinGW, пока не вышло.
Поможет ли перенос проекта в студию версией повыше?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.10.2012, 21:07     0xC0000005 или что делать дальше #14
Цитата Сообщение от BFB Посмотреть сообщение
Код функции на выходе, которой код падает:

C++
1
2
3
4
5
int READ_VANES(char *NAME_FILE , VANE *&vane , VAR *&var)
{
    std::fstream datafile;
    return 1;
}
я так понял, тут многое убрано. А именно в таком виде падение повторяется?
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
12.10.2012, 00:27  [ТС]     0xC0000005 или что делать дальше #15
Цитата Сообщение от Kastaneda Посмотреть сообщение
я так понял, тут многое убрано. А именно в таком виде падение повторяется?
Самое интересное, да - падание повторяется строго на выходе из функции.
Собирал тестовую программу из этой функции с учетом всех переменных, правда данных не было, так же падало. В исходном коде занулял все передаваемые данные, такой же результат, т.е. падение на выходе из функции.
Invader_Zim
Twilight Parasite
 Аватар для Invader_Zim
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
12.10.2012, 00:37     0xC0000005 или что делать дальше #16
BFB, Может стоит закрывать файл перед выходом из функции?
algoritm256
 Аватар для algoritm256
9 / 9 / 1
Регистрация: 05.02.2012
Сообщений: 147
Записей в блоге: 1
12.10.2012, 06:21     0xC0000005 или что делать дальше #17
Попробуйте перед return поставить datafile.close();
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
12.10.2012, 12:14  [ТС]     0xC0000005 или что делать дальше #18
Не помогло, использование datafile.close(); так же, как и использование datafile.rdbuf()->close();
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
12.10.2012, 12:37     0xC0000005 или что делать дальше #19
Могу предложить fastfix (временный костыль) просто, чтобы работало. Потом время будет - разберешся.
C++
1
2
3
4
5
int READ_VANES(char *NAME_FILE , VANE *&vane , VAR *&var)
{
    std::fstream *datafile = new std::fstream();
    return 1;
}
будет небольшой memleak, но зато будет работать (если дело в деструкторе).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2012, 15:06     0xC0000005 или что делать дальше
Еще ссылки по теме:

Нарисовать ромб через цикл,почти сделал,не могу понять что делать дальше C++
C++ И что делать дальше?Поделитесь опытом
Прошел книгу Шилтда, что делать дальше? C++

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

Или воспользуйтесь поиском по форуму:
BFB
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 9
12.10.2012, 15:06  [ТС]     0xC0000005 или что делать дальше #20
Цитата Сообщение от Kastaneda Посмотреть сообщение
Могу предложить fastfix (временный костыль) просто, чтобы работало. Потом время будет - разберешся.
C++
1
2
3
4
5
int READ_VANES(char *NAME_FILE , VANE *&vane , VAR *&var)
{
    std::fstream *datafile = new std::fstream();
    return 1;
}
будет небольшой memleak, но зато будет работать (если дело в деструкторе).
Конечно это работает, спасибо. Но как убрать эти подвисшие объекты?

По мне так проще отказаться от С++ решения ввода-вывода.

И еще есть мысль, что, возможно, pgmalloc.dll каким-то образом заменяет Сишные функции по работе с памятью или еще как-то.

Добавлено через 13 минут
Цитата Сообщение от BFB Посмотреть сообщение
И еще есть мысль, что, возможно, pgmalloc.dll каким-то образом заменяет Сишные функции по работе с памятью или еще как-то.
Ошибка, pgmalloc.dll не при чем.

Добавлено через 12 минут
Убрал все PGI'ные либы, которые были за ненадобностью запиханы в проект, и заработало.
В чем ошибка была, я так и не понял.
Yandex
Объявления
12.10.2012, 15:06     0xC0000005 или что делать дальше
Ответ Создать тему
Опции темы

Текущее время: 23:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru