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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.65
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
#1

Ошибка времени выполнения - C++

30.08.2009, 14:12. Просмотров 2301. Ответов 7
Метки нет (Все метки)

Я пишу проэкт в Visual Studia 2008 на C++. У меня есть несколько проблем.
Во-первых, когда я собираю финальную версию (release) и запускаю не выполнение, то появляется ошибка:
Код
Unhandled exception at 0x00402330 in chtml.exe: 0xC0000005: Access violation reading location 0x00000000.
вот в этом месте
C++
1
2
3
4
5
6
7
8
int main( int argv, char *argc[] )
{
#if ! LINUX
    setlocale( LC_ALL, ".1251" );
#endif
    ConvertToHtml html;
    if( !strcmp(argc[1], "-h") || !strcmp(argc[1], "--help") )
    {
Если собирать отладочную версию (debug), то этого сообщения не появляется. Тут что-то связано с правами доступа, наверно. Как от этого избавиться?
Во-вторых, если собирать отладочную версию и запустить, то после выполнения VS выдаёт ошибку:
Код
Run-Time Check Failure #2 - Stack around the variable 'html' was corrupted.
Если понадобится, то вывешу код (я просто не знаю место возникновения ошибки).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2009, 14:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка времени выполнения (C++):

Ошибка времени выполнения. - C++
Вот код: void Add_Kod ( _kod*& KodBuf, int a, char* buf, char* buf2) { if(a==1) { KodBuf = new _kod; KodBuf.ch = *(buf);...

Ошибка времени выполнения (terminate) - C++
вот этот код // на всякий случай привожу весь код, // т.к. не понимаю что именно вызывает ошибку // verylong.h #ifndef...

Почему происходит ошибка времени выполнения? - C++
прошу помощи в поиске ошибки! уже 2часа пытаюсь найти и никак... Тоже задание по структуре. над ошибкой уже 2 час сижу не могу понять...

Ошибка времени выполнения Не могу понять как победить - C++
Привет всем. Вот написал тут нехитрый код для считывания и записи файлов. При компиляции ошибок нет и предупреждений нет. А вот как...

Ошибка времени выполнения при использовании функции scanf_s - C++
Есть код создания библиотеки книг, это его часть. Если потребуется могу скинуть весь код, но он без комментариев void...

Почему происходит ошибка времени выполнения в решении задачи "Ход конем"? - C++
Добрый день! Я попытался решить одну задачку о шахматах. Проблема в том, что моя программа крашится с такой ошибкой: ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 14:31 #2
Код
if( !strcmp(argc[1], "-h") || !strcmp(argc[1], "--help") )
А аргументы передаются? Иначе argc[1] будет ссылаться на неизвестное место.
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
30.08.2009, 14:34  [ТС] #3
Точно! В release версии VS не передаёт аргументы. Спасибо! А что со вторым вопросом?
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 15:09 #4
Цитата Сообщение от RazorQ Посмотреть сообщение
А что со вторым вопросом?
Посмотреть бы что такое ConvertToHtml и что оно делает с html.

Кстати, список параметров обычно передают в *argv[] (от argument vector), а их количество в argc (от argument count), а не наоборот.
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
30.08.2009, 15:21  [ТС] #5
Цитата Сообщение от Gravity Посмотреть сообщение
Посмотреть бы что такое ConvertToHtml и что оно делает с html.
ConvertToHtml - это класс, который занимается переводом исходных текстов программ в файл html (с подсветкой синтаксиса).
html - это объект этого класса, который я создаю в начале программы и, исходя из параметров, открываю через функцию open() входной и выходной файл. Дальше этот объект варится сам в себе, проводя преобразование файла и по окончанию возвращает управление функции main(). Она завершает всю программу.

Цитата Сообщение от Gravity Посмотреть сообщение
Кстати, список параметров обычно передают в *argv[] (от argument vector), а их количество в argc (от argument count), а не наоборот.
спасибо буду занть. Сразу как-то не запомнил.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 15:25 #6
Цитата Сообщение от RazorQ Посмотреть сообщение
ConvertToHtml - это класс, который занимается переводом исходных текстов программ в файл html (с подсветкой синтаксиса).
Нужно внимательно смотреть нет ли там выхода за допустимые пределы памяти, потому что "stack corrupted" наверняка происходит из-за этого.
RazorQ
577 / 344 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
30.08.2009, 16:00  [ТС] #7
Вообще эта ошибка появляется только в дебажной версии, так что это второстепенный вопрос. Вот исходные тексты (проэкт VS и просто исходники), если будет желание, просмотрите пожалуйста. Тем, кто решит воспользоваться исходными текстами: в них много ошибок. Это не специально, просто я ещё не закончил программу.
Вложения
Тип файла: zip vs2008.zip (2.19 Мб, 17 просмотров)
Тип файла: zip source.zip (5.9 Кб, 14 просмотров)
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
30.08.2009, 18:34 #8
Посмотрел исходники. Как и говорил, есть выход за пределы массива в ConvertToHtml::power(), в цикле чтения файла происходит переполнение token. Надо задавать размер больше 40 или как-то периодически освобождать массив.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2009, 18:34
Привет! Вот еще темы с ответами:

Измерение времени выполнения - C++
Подскажите пожалуйста как измерить время выполнения чего-то с наносекундной точностью. std::chrono::high_resolution_clock::time_point...

Оптимизация времени выполнения - C++
Доброго времени суток. Есть следующая задача. Задача олимпиадная, потому учитывается время выполнения, нужно вложится в 1секунду. Мой код...

Подсчет времени выполнения сортировки - C++
Подскажите, пожалуйста, как написать в программе, чтобы подсчитывало время выполнения сортировки? Там как-то надо ввести "clock time" ...

Уменьшение времени выполнения цикла - C++
Нужна помощь, мне надо засечь время выполнения цикла, который инициализирует элементы массива. А потом надо как-то развернуть цикл и...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.08.2009, 18:34
Ответ Создать тему
Опции темы

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