Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.03 c