|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2009, 23:56 | #1 |
Регистрация: 17.12.2009
Сообщений: 6
|
Память не может быть "read"
всем привет.
Скомпилил я переборщик паролей в visual c++2005. При малой длине пароля и при малых алфавитах, все прекрасно работает. Но если ставить большие, то прога, отработав какое-то время, выдает ошибку типа: инструкция по адресу "0х00412759" обратилась к памяти по адресу "(тут разные значения получаются, например 0х0036с00а)". Память не может быть "read". Где-то я вылезаю за допустимые границы.... Подскажите пожалуйста что изменить для устранения ошибки или как выяснить в чем проблема. Если кому не жалко на меня времени, посмотрите пожалуйста. тут исходный код и исполняемый файл http://files.mail.ru/APD71A Отладка в Visual c++ останавливается в 334 строке файла arj2.с t = text[r] = text[i]; В hiew посмотрел адрес 0х00412759, показывает 8А (mov al, [esi][eax). как это использовать для устранения ошибки не представляю, с асемблером сложно... |
18.12.2009, 00:15 | #2 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 63
|
это включённый DEP. В винде есть такая совершенно бесполезная (как и все остальные) система защиты. Её надо отключить. Открываешь boot.ini и напротив своей винды находишь noexecute=Optin. Меняешь на noexecute=AlwaysOff. Перезагружаешься.
|
18.12.2009, 00:21 | #3 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
По делу: Ну как глянул на код... Вы уж извените но разгребать его это самоубийство вообщем. Но по строке где массив text и переменный (видимо счетчики) r и i надо либо "бряки" ставить либо простую проверочку на попадание в интервал от 0 до длина_массива_text - 1. Наверное просто вылетаите за границы массива. Если нет, будем дальше думать |
|
18.12.2009, 00:23 | #4 | |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
Цитата:
Если я помог вам - порадуйте меня, нажмите на весы слева
|
|
18.12.2009, 00:25 | #5 | |
Пользователь
Регистрация: 04.12.2009
Сообщений: 63
|
Цитата:
|
|
18.12.2009, 00:29 | #6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Darth.Vader, что значит надо отключить?) Разве это решение проблемы? Раз срабатывает - значит на то есть причины. В принципе, если сознательно необходимо отключить DEP для какого-то приложения(например при использовании библиотеки ATL старых версий), это можно сделать в настройках линкера(во всяком случае в VS2008, во вкладке Advanced)
Последний раз редактировалось netrino; 18.12.2009 в 00:33. |
18.12.2009, 00:34 | #7 |
Пользователь
Регистрация: 04.12.2009
Сообщений: 63
|
netrino
Ну... у каждого свой стиль настройки системы. Дело в том, что она срабатывает иногда на других программах, особенно сложных, таких, как игры. Тем более, что пользы реальной замечено не было ни разу. Работает - выкидывает - мол, ошибка. Отключаешь - всё работает гладко, и паника, как говорится, зря была. |
21.12.2009, 01:06 | #8 |
Регистрация: 17.12.2009
Сообщений: 6
|
всем большое спасибо помощь в этой проблеме.
ВОВАН13, отдельное спасибо, за направление на истинный путь |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ошибка - память не может быть read | volf | Софт | 31 | 20.08.2015 16:39 |
Динамическая память или кнопка "Отмена" и "Назад" | Ilnour1986 | Microsoft Office Excel | 2 | 27.10.2009 04:49 |
Ячейка А1=16, В1=18, в ячейке С1=А1/В1 должна быть запись "0,89:1000" | julliz | Microsoft Office Excel | 6 | 27.09.2009 19:28 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Память не может быть "read" | Alewteena | Безопасность, Шифрование | 3 | 27.08.2008 05:16 |