Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Вниз

Почему падает деструктор   Найти похожие ветки 

 
id_privin   (2002-09-04 12:43) [0]

Второй день не могу понять. Есть класс наследник TObject.
В нем несколько моих полей. конструктор. деструктор.
Создаю. Пользаю. Вызываю Free. Весь мой код деструктора срабатывает нормально, а при вызове inherited выдает Access Violation.

Поставил деструктор в try except. Вызвал много раз. Потерь памяти не заметил. Те вроде все чистит.

В чем может быть дело? Профи ответте кто знает.


 
gek   (2002-09-04 12:45) [1]

приведи код


 
Dimka Maslov   (2002-09-04 12:45) [2]

Приведи код конструктроа и деструктора для начала


 
Виктор Щербаков   (2002-09-04 12:48) [3]


> Весь мой код деструктора срабатывает нормально, а при
> вызове inherited выдает Access Violation.

Вообще интересно. У TObject - пустой деструктор.


 
Digitman   (2002-09-04 12:48) [4]

приведи декларацию и реализацию деструктора


 
id_privin   (2002-09-04 18:56) [5]

TMyObj = class(TObject)
......
List : StringList;
Constructor Create(....); overload;
Constructor Create(....); overload;
....
Destructor Destroy; override;
end;

Constructor Create(...)
begin
inherited Create;
List := TStringList.Create;
end;

destructor Destroy
begin
List.Free;
Inherited Destroy;
end;

Собственно все.

To Виктор Щербаков © ну если он пустой то я не порога вылетает между строк кода. Хотя если долго жать F7 почемуто видно что после пользовательской части деструктора вызывается еще куча чего-то на asm-е. Уж не знаю что это, но падает там.



 
Ученик   (2002-09-04 19:10) [6]

TMyObj.Create.Free не вылетает ?


 
KSergey   (2002-09-05 07:25) [7]

Действительно странно... Ну разве что я обычно просто пишу
destructor Destroy
begin
...
inherited;
end;

хотя это вроде одно и тоже.
А вообще Ученик © (04.09.02 19:10) прав: если такой код не вылетает - значит косяк внутри других методов, просто проявляется это лишь в деструкторе (можно проверить чему равно значение List на момент вызова деструктора, например: ссылается ли на реальный объект). А вот если и такой простой код не работает (TMyObj.Create.Free) - тогда совсем не понятно.



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

Форум: "Основная";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
1-50735
Weare
2002-09-02 12:40
2002.09.16
Сервис в Windows2000Server


1-50826
Song
2002-09-03 14:31
2002.09.16
Бьюсь над проблемой: как узнать, что скринсэйвер работает?


3-50618
sergey32
2002-08-22 17:30
2002.09.16
параметры хранимой процедуры


14-50969
Мася
2002-08-22 08:22
2002.09.16
Господа!


3-50577
RDA
2002-08-23 15:56
2002.09.16
Пара вопросов.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский