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

Вниз

Invalid Pointer Operation после завершения программы   Найти похожие ветки 

 
Franzy ©   (2004-04-15 18:25) [0]

После завершения программы вдруг выскакивает ошибка Invalid Pointer Operation. Никак не могу понять, с чем она может быть связана.
Что КОНКРЕТНО ее может вызвать? В программе используются дин. массивы, свои объекты не используются.


 
WebErr ©   (2004-04-15 18:31) [1]

Когда именно? После закрытия окна? Тогда рекомендую посмотреть не пытается ли окно освободить по второму разу Some.Free (с вашей помощью) некий ресурс, член (извеняюсь) формы.


 
Anatoly Podgoretsky ©   (2004-04-15 19:26) [2]

Неверная работа с указателями, динамический массив это тоже указатель, а что внутри массива вообще можно догадываться


 
Юрий Зотов ©   (2004-04-15 19:33) [3]

> Franzy ©   (15.04.04 18:25)

DLL используется? Если да, передаются ли в нее дин. массивы?


 
Franzy ©   (2004-04-15 22:15) [4]

Да, ошибка возникает именно сразу после того, как нажат "крестик".

Я "убираю" дин. массивы так: array:=nil. Но даже если эти строчки закомментировать, ничего не меняется. Вообще, у меня когда-то была похожая проблема, там дело было связано с длиной массива. Но здесь все чисто.

Дллки никакие не используются.

Вопрос остается тот же:) Какие ошибки в работе с дин. массивами могут быть причиной этого сообщения, причем возникающего после закрытия программы? Кто-нибудь с подобным сталкивался?


 
Юрий Зотов ©   (2004-04-15 22:29) [5]

> Franzy ©   (15.04.04 22:15) [4]

1. Нужно объявление массива  - что в нем за элементы?
2. Вообще говоря, причиной может быть и не массив.
3. Попробуйте локализовать ошибку. В одном из модулей сделайте секцию finalization, в ней напишите что угодно, поставьте BreakPoint и пройдите стадию завершения отладчиком.


 
Dimaxx ©   (2004-04-15 22:38) [6]

Бывало такое, когда забывал выполнить FreeMem при закрытии.


 
Franzy ©   (2004-04-15 22:42) [7]

У меня несколько массивов - точнее говоря, даже несколько десятков :) В частности:
-------------------------------------------------
Type
 TNbrs = Array [0..nbr_num] of longint;

 TNode = Record
   Nbr :  TNbrs;
   r : T3dPoint;
   belongs : TaoMasters;
 End;

 TNodeType =(Base, Inner, Conc);

TChunkArray = array of array of array of longint;

TRefArray = Record
  ch : array[1..4] of byte;
  typ : TNodeType;
End;

var

  Net : Array of TNode;
  nb : array [1..7] of TChunkArray;
  ref : array of TRefArray;
  Carr : array [0..3] of array [1..6] of TChunkArray;
---------------------------------------------------

Расскажите, пожалуйста, подробнее о методе дебага с finalization - мне этот метод, похоже, не знаком.


 
vertal   (2004-04-16 01:48) [8]

У меня тоже такое было , причем при прохождении встроенным в среду отладчиком ошибка была на строке "end." , то есть в самом конце программы,причем дельфийские динамические массивы не использовались.Я так и не разобрался , только обнаружил , что если прерывать программу через Halt , то такое сообщение не появляется.


 
kaif ©   (2004-04-16 03:39) [9]

Подробнее про finalization:

//текст модуля
finalization
 // здесь что-то вставить, что оптимизатор не выкинет,
 // например, присвоение значения какой-нибудь глобальной  
 // переменной и поставить на эту строку точку останова.
 // затем запустить программу и после того, как она здесь
 // застрянет - идти пошагово.
end.


 
Спрашивающий_   (2004-04-16 06:51) [10]

TChunkArray = array of array of array of longint;
Net : Array of TNode;
ref : array of TRefArray;
Заремарьте все действия если это возможно поочередно
с вышеуказанными дин массивами, если на каком то из них
ошибка при выходе исчезнет, то проверьте правильность
выделение памяти под динамический массив  SetLength(..



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

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

Наверх




Память: 0.49 MB
Время: 0.041 c
6-1078844585
jcrush
2004-03-09 18:03
2004.05.02
IdSMTPServer отправка минуя сервер


14-1081435540
TButton
2004-04-08 18:45
2004.05.02
Про глобальные переменные


1-1082134353
AsD
2004-04-16 20:52
2004.05.02
LitView


1-1081943575
Алексей2
2004-04-14 15:52
2004.05.02
Как "превратить" строку в имя переменной?:


1-1082030490
Назаров Евгений
2004-04-15 16:01
2004.05.02
PChar строка