![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| awesome |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
При вызове функции char_to_dec(), при попытке освобождения, выделенной памяти(delete[] buff2) вылетает ошибка "This may be due to a corruption of the heap, which indicates a bug in Gost.exe or any of the DLLs it has loaded. и т.д" Причем, если из maina эта функция вызывается без ошибок, то из функции decrypt() данная ошибка появляется. Отметил //!!!!!!!!!!!!! где вылетает ошибка. Что-то не выделяется текст в тэгах коде /коде |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Эх... посмотрел я ваш код
Боже упаси так писать Наченем с int main() по стандарту Если массив не одномерный, то определяем { { 0, 0 } } по стандарту опять же Обращаем внимание на то что компилятор указывает на изобилие неиспользуемых переменных чуть ли не в каждой функции Вообщем, если можно, выложите нерабочий участок кода, проверьте, будет ли heap corruption если тело char_to_dec закоментировать и пусть она возвращает одно и тоже, если и при этом будет ошибка, не в ней дело, если исчезнет, то скорее всего внутри этой функции - выход за пределы массива Добавлено через 11 минут и 39 секунд Можете попробовать использовать вместо itoa _itoa_s или как там его - который безопасный. В данный момент на линухе без окон и не могу проверить работу программы, не переписываю функции ( так лень Это сообщение отредактировал(а) sQu1rr - 18.11.2010, 21:08 |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
И да еще вопрос
Ничего что ты передаешь в функцию decrypt ( argv[3], argv[4] ) ? Если честно - меня убило
Скорее отсюда и ошибка Создай сначало массив - argv -для ВХОДНЫХ параметров, зачем его изменять? И да... Не поленился проверил char_to_dec Выходна за предел массива нет, ошибка не оттуда. Уверен, что это argv. И все же, даже если взодные данные есть. ЗАЧЕМ ИХ МЕНЯТЬ? |
|||
|
||||
| awesome |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
sQu1rr, спасибо за помощь и советы! argv создал, как надо. Но эта функция все рано выдает ошибку.
при delete[] buff2 вылетает "heap corruption detected: after normal block(#153)...." |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
awesome, если что, можно делать так:
-------------------- вопросов больше чем ответов |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
||||
|
||||
| awesome |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
Леопольд, студия говорит, что нельзя...
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
h[i] неявно преоbразуется в int, т.е., если ah[i] == '0' то itoa запишет в bуфер десятичное число 48 (если это ANSI) в двоичном представлении.
А ещё, itoa не входит в стандарт языка. Это сообщение отредактировал(а) Леопольд - 18.11.2010, 23:39 -------------------- вопросов больше чем ответов |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
ТС работает в VC Добавлено @ 23:43 Эх, а ошибка и правду в этой функции кроеться
Это лог, выводиться каждое неверное обращение к массиву в функции char_to_dec Найди ошибку сам формат Name: [переменная][size_x][size_y]; => x->y Это сообщение отредактировал(а) sQu1rr - 18.11.2010, 23:46 |
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
точно знаю, что можно так (g++ не треbует константы):
http://liveworkspace.org/code/daa83accd5a9...a8e9e7c50960bd9 -------------------- вопросов больше чем ответов |
|||
|
||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
||||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Главное помнить, то массив bудет на стеке а не в куче...
-------------------- вопросов больше чем ответов |
|||
|
||||
| awesome |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
я эту функцию убрал. теперь функция char_to_dec выглядит, как
ошибка вылетает именно на строчке delete[] buff2;
мне это и нужно=) |
||||||
|
|||||||
| sQu1rr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 597 Регистрация: 11.11.2008 Где: london Репутация: 3 Всего: 13 |
Не потому что с ней чтото невпорядке, а потому что случилось чтото до этого... например, как я говорил, выход за массив, осталось только определить где... Это же С++, почему не используешь нормальные векторы или лучше boost::array и boost::multi_array? Вернусь к этой теме с утра Это сообщение отредактировал(а) sQu1rr - 19.11.2010, 00:07 |
|||
|
||||
| awesome |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 20.10.2010 Репутация: нет Всего: нет |
не обладаю знаниями по этим вопросам. дали задание, пишу пока, как умею. в будущем, конечно, придется использовать более сложные конструкции.
ходил по дебагером, s вроде всегда от 0 до 31 - выхода за массив не наблюдается. завтра, значит, буду разбираться более детально. sQu1rr, Леопольд, спасибо за помощь! |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |