Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

Что за зверь такой - Access Viloation?   Найти похожие ветки 

 
Franzy ©   (2003-12-06 19:12) [0]

В моей вычислительной проге вдруг стала постоянно появляться эта ошибка. Бьюсь уже два дня, но все никак не могу найти фрагмент кода, который ее вызывает. Мастера, подскажите, какие операторы могут быть причиной? Явно это какая-то фигня с виртуальной памятью. (С пойнтерами в проге не работаю, только с динамическими массивами.)


 
Anatoly Podgoretsky ©   (2003-12-06 19:19) [1]

Ошибка доступа к памяти, у тебя используют недействительные, неверные указатели, искать тяжело, легче не делать ошибок.


 
Franzy ©   (2003-12-06 19:21) [2]

Ах, забыл написать - отлаживал с помощью Step and run, но Дельфи, похоже, глючит по-левому в этом случае. Вставляю Showmessage перед местом, где якобы происходит обрыв, но он не вызывается. Такое ощущение, буд-то бы сообщение об ошибке просто тормозит с появлением.


 
Franzy ©   (2003-12-06 19:22) [3]

Я же сказал, никаких указателей (ака пойтнеры) не использую!!!


 
Stilgar ©   (2003-12-06 19:24) [4]

А классы тоже не используются?


 
Anatoly Podgoretsky ©   (2003-12-06 19:32) [5]

Franzy © (06.12.03 19:22) [3]
Не обманывай, неужели пишешь только на классическом Паскале?


 
Юрий Федоров ©   (2003-12-06 20:20) [6]

Нигде не работаешь указателями? И Экземпляры класов нигде не разрушаешь (например)


 
Zacho ©   (2003-12-06 20:51) [7]

Вот точный ответ, что это за зверь :

EAccessViolation is raised when an application
Dereferences a nil pointer.
Writes to memory reserved for executable code.
Attempts to access a memory address for which there is no virtual memory allocated to the application.

А теперь подумай, что именно в твоей программе может привести к этой ошибке.


 
Franzy ©   (2003-12-06 22:19) [8]

Ну почему, классы использую. Фишка в том, что когда начала появляться эта ошибка, я никаких новых классов не вводил и не уничтожал.

Zacho: спасибо, но хелп я уже читал. Фраза Attempts to access a memory address for which there is no virtual memory allocated to the application (что скорее всего и указывает на ошибку) мало что говорит мне о том, КАКАЯ ФИГНЯ вызывает ее.

Кто-нибудь все-таки скажет мне, КОНКРЕТНО какие операторы могут вызвать эту ошибку. Где искать причину?


 
Юрий Федоров ©   (2003-12-06 22:21) [9]


> Кто-нибудь все-таки скажет мне, КОНКРЕТНО какие операторы

практически любые


 
Stilgar ©   (2003-12-06 23:52) [10]

Прикинуть, какие в это время приходят сообщения, поставить контрольные точки остановки. Свое приложение отлаживать, IMHO, проще. На более точный совет я бы не расчитивал. На сайте есть такая тенденция: когда вопрос слишком сложный или невозможно ответить конкретно, мастера начинают издеватся (не в обиду будет сказано).


 
Германн ©   (2003-12-07 02:32) [11]

2 Franzy © (06.12.03 22:19) [8]
> Кто-нибудь все-таки скажет мне, КОНКРЕТНО какие операторы

Самые частые причины возникновения AV - обращения к экземплярам объектов(классов) ещё не созданных или уже уничтоженных.


 
Юрий Федоров ©   (2003-12-07 03:21) [12]

>>Германн © (07.12.03 02:32) [11]
Самая частая причина - обращение к еще не созданным...
потому что когда идет обращение к уже уничтоженым - тогда автор вопроса знает, как их создавать/уничтожать, и соответственно начинает за этим следить


 
Германн ©   (2003-12-07 03:44) [13]

2 Юрий Федоров © (07.12.03 03:21) [12]
>>Германн © (07.12.03 02:32) [11]

>Самая частая причина - обращение к еще не созданным...
>потому что когда идет обращение к уже уничтоженым - тогда автор >вопроса знает, как их создавать/уничтожать, и соответственно >начинает за этим следить

Увы! Знать как и что, еще не значит не допускать ошибок в коде. У нас ведь сейчас не линейная модель программирования, а событийная</B. Некий экземпляр объекта уже мог быть уничтожен при обработке некоего события, а я то - глупый считал, что это событие не может возникнуть до того как!


 
Думкин ©   (2003-12-07 06:22) [14]


> (С пойнтерами в проге не работаю, только с динамическими массивами.)

Наверное тут и порылось. Вероятность 99%.


 
Digitman ©   (2003-12-07 11:39) [15]


> Franzy


Сообщение об исключении у тебя выглядит примерно вот так :
".. access violation at address XXXXXXXX ...."

стартуй приложение под управлением встр.отладчика, вызови меню Search -> Find Error, введи в EditBox этот самый XXXXXXXX - отладчик с немалой вероятностью покажет тебе ту строчку исх.текста, при исполнении которой произошло данное исключение


 
Franzy ©   (2003-12-07 21:34) [16]

Спасибо! Сейчас попробую ваш способ.


 
Franzy ©   (2003-12-07 22:22) [17]

стартуй приложение под управлением встр.отладчика, вызови меню Search -> Find Error, введи в EditBox этот самый XXXXXXXX - отладчик с немалой вероятностью покажет тебе ту строчку исх.текста, при исполнении которой произошло данное исключение

Хех, так он не срочку исходника показывает, а строчку на ассемблере! Мне это мало помогает, потому что асма я не знаю.



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
1-62044
Dimaxx
2003-12-04 01:21
2003.12.19
Блокировка скриптов для WebBrowser


6-62176
dream
2003-10-22 15:21
2003.12.19
как работать с компонентами clientsocet serversocet через прокси


14-62244
BOA_KAA
2003-11-25 11:50
2003.12.19
Mozilla Mail & переустановка Windows


7-62303
Alexis
2003-10-14 16:05
2003.12.19
Определение пути выполняемых приложений.


14-62250
BlackTiger
2003-11-25 15:09
2003.12.19
Как вам Yukon (новый MSSQL)? Я - тащусь!