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

Вниз

Правильное завершение программы   Найти похожие ветки 

 
xayam ©   (2007-02-13 11:06) [0]

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


 
stone ©   (2007-02-13 11:07) [1]

ошибка в 17-ой строке


 
tesseract ©   (2007-02-13 11:08) [2]

Указатели  / много всяких Free объекта.


 
xayam ©   (2007-02-13 11:14) [3]


> tesseract ©   (13.02.07 11:08) [2]
> Указатели  / много всяких Free объекта.

free я не вызываю,  dpr правил вручную -
program DelphiTo;

uses
 Forms,
 UMForm in "UMForm.pas" {FD2h},
 UAbout in "UAbout.pas" {AboutBox},
 ULicense in "ULicense.pas" {LicenseDialog},
 UFView in "UFView.pas" {FView: TFrame},
 UFPublic in "UFPublic.pas" {FPublic: TFrame},
 UFFiles in "UFFiles.pas" {FFiles: TFrame},
 UFOptions in "UFOptions.pas" {FOptions: TFrame},
 UFOMain in "UFOMain.pas" {FOMain: TFrame},
 UFOFiles in "UFOFiles.pas" {FOFiles: TFrame},
 UFOPublic in "UFOPublic.pas" {FOPublic: TFrame},
 UFOOther in "UFOOther.pas" {FOOther: TFrame},
 UFOConvert in "UFOConvert.pas" {FOConvert: TFrame},
 UFOHtml in "UFOHtml.pas" {FOHtml: TFrame},
 UFOCss in "UFOCss.pas" {FOCss: TFrame},
 UFOSsi in "UFOSsi.pas" {FOSsi: TFrame},
 UTemplateConst in "UTemplateConst.pas",
 ...;

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TFD2h, FD2h);
 Application.CreateForm(TAboutBox, AboutBox);
 Application.CreateForm(TLicenseDialog, LicenseDialog);

 Application.CreateForm(TFFiles, FFiles);
             FFiles.Parent:= FD2h.JvStandardPage1;
 Application.CreateForm(TFView, FView);
             FView.Parent:= FD2h.JvStandardPage2;
 Application.CreateForm(TFPublic, FPublic);
             FPublic.Parent:= FD2h.JvStandardPage3;
 Application.CreateForm(TFOptions, FOptions);
             FOptions.Parent:= FD2h.JvStandardPage4;

 Application.CreateForm(TFOMain, FOMain);
             FOMain.Parent:= FOptions.PagesOption.Pages[0];
 Application.CreateForm(TFOFiles, FOFiles);
             FOFiles.Parent:= FOptions.PagesOption.Pages[1];
             //view
 Application.CreateForm(TFOPublic, FOPublic);
             FOPublic.Parent:= FOptions.PagesOption.Pages[3];
 Application.CreateForm(TFOConvert, FOConvert);
             //4-5
             FOConvert.Parent:= FOptions.PagesOption.Pages[6];
 Application.CreateForm(TFOHtml, FOHtml);
             FOHtml.Parent:= FOptions.PagesOption.Pages[7];
 Application.CreateForm(TFOCss, FOCss);
             FOCss.Parent:= FOptions.PagesOption.Pages[8];
 Application.CreateForm(TFOSsi, FOSsi);
             FOSsi.Parent:= FOptions.PagesOption.Pages[9];
             //10-16
 Application.CreateForm(TFOOther, FOOther);
             FOOther.Parent:= FOptions.PagesOption.Pages[17];

  Application.Run;
end.

соответственно переменные FFiles...FOOther (фреймы) объявлены как глобальные в модулях UFFiles...UFOOther


 
Плохиш ©   (2007-02-13 11:15) [4]


> xayam ©   (13.02.07 11:14) [3]

В таком коде может быть всё что угодно...


 
xayam ©   (2007-02-13 11:25) [5]


> Плохиш ©   (13.02.07 11:15) [4]
> > xayam ©   (13.02.07 11:14) [3]
> В таком коде может быть всё что угодно...

а из-за вложенных фреймов такое может быть? Например при неправильном порядке вызовов free


 
evvcom ©   (2007-02-13 11:29) [6]

> [5] xayam ©   (13.02.07 11:25)

Тебе ж сказали, "все, что угодно"! В смысле "может".


 
xayam ©   (2007-02-13 11:31) [7]


> evvcom ©   (13.02.07 11:29) [6]
> > [5] xayam ©   (13.02.07 11:25)
> Тебе ж сказали, "все, что угодно"! В смысле "может".

понятно, непонятно как отловить эту ошибку. Вообще мне нужно самостоятельно вызывать метод free для глобальных переменных-фреймов, если свойство Parent у каждого фрейма установлено, как в коде выше?


 
Плохиш ©   (2007-02-13 11:37) [8]


> xayam ©   (13.02.07 11:31) [7]
> понятно, непонятно как отловить эту ошибку.

Если это не понятно, при всём количестве средств отладки встроенном в делфи, то тебе надо менять профессию пока не поздно.


 
xayam ©   (2007-02-13 11:39) [9]


> Плохиш ©   (13.02.07 11:37) [8]
> > xayam ©   (13.02.07 11:31) [7]
> > понятно, непонятно как отловить эту ошибку.
> Если это не понятно, при всём количестве средств отладки
> встроенном в делфи, то тебе надо менять профессию пока не
> поздно.

дык, так эта ошибка раз-два в день появляется. Если бы при каждом завершении работы)) было б конечно лучше


 
evvcom ©   (2007-02-13 12:02) [10]

> [7] xayam ©   (13.02.07 11:31)
> Вообще мне нужно самостоятельно вызывать метод free для
> глобальных переменных-фреймов

Ух... :(
Разбираться в твоем хитросплетении естественно никому нехоца, дам лишь совет. Перед вызовом free запомни объект в локальной переменной, потом обнули ссылку на объект, а потом уж вызывай Free. Это тебе даст гарантию того, что для уже уничтожаемого объекта ты рекурсивно не вызовешь повторно Free. Или используй FreeAndNil, там уже это реализовано.
И. Сколько ссылок на один и тот же объект ты хранишь?


 
xayam ©   (2007-02-13 12:10) [11]


> evvcom ©   (13.02.07 12:02) [10]
> Сколько ссылок на один и тот же объект ты хранишь?

одна переменая на каждый фрейм


 
xayam ©   (2007-02-13 12:21) [12]

кстати можно же Attach to process сделать и найти место ошибки, блин а вот адрес я не записал ((


 
Desdechado ©   (2007-02-13 12:30) [13]

MemProof для мониторинга потерянных ресурсов


 
evvcom ©   (2007-02-13 12:33) [14]

> [12] xayam ©   (13.02.07 12:21)

Место ошибки прога тебе и так должна сообщить, а аттачиться совсем необязательно. Запускаешь прогу, Search - Find Error и вводи свой адрес.


 
xayam ©   (2007-02-13 12:38) [15]


> evvcom ©   (13.02.07 12:33) [14]
> > [12] xayam ©   (13.02.07 12:21)
> Место ошибки прога тебе и так должна сообщить, а аттачиться
> совсем необязательно. Запускаешь прогу, Search - Find Error
> и вводи свой адрес.

а я из проводника обычно запускаю

> Desdechado ©   (13.02.07 12:30) [13]
> MemProof для мониторинга потерянных ресурсов

спасибо, посмотрю


 
Elen ©   (2007-02-13 12:46) [16]


> а я из проводника обычно запускаю

Из проводника много не увидишь. Запускай из делфы и правь дебугером.


 
evvcom ©   (2007-02-13 12:49) [17]

> [15] xayam ©   (13.02.07 12:38)
> а я из проводника обычно запускаю

При отображении ошибки в [0] указывается также место, где она возникла. Переписываешь адресок на бумажку и бежишь на машину, где установлена Дельфя с исходниками (не правленными) той самой версии, которая только что тебе выдала ошибку. Далее запускаешь Дельфи и [14]


 
xayam ©   (2007-02-13 13:27) [18]


> Desdechado ©   (13.02.07 12:30) [13]
> MemProof для мониторинга потерянных ресурсов

а где последнюю версию скачать можно? в файлообменной сети нашел версию 0.9.50 но ждать наверно долго придется


 
evvcom ©   (2007-02-13 14:45) [19]

> [18] xayam ©   (13.02.07 13:27)

Она, по-моему, шароварная и линки в сети были помимо осликов.


 
roottim ©   (2007-02-13 15:25) [20]

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

MemCheck: the ultimate memory troubles hunter
Created by: Jean Marc Eber & Vincent Mahon, Sociщtщ Gщnщrale, INFI/SGOP/R&D
Version 2.73 -> Also update OutputFileHeader when changing the version #

Contact...
Vincent.Mahon@free.fr
http://v.mahon.free.fr/pro/freeware/memcheck

Mail address:
Tour Sociщtщ Gщnщrale
Sgib/Sgop/R&D
92987 Paris - La Dщfense cedex
France


 
xayam ©   (2007-02-13 15:37) [21]


> roottim ©   (13.02.07 15:25) [20]
> я пользуюсь MemCheck

это я уже пробовал, исходники вообще-то даже не компилируется, несколько ошибок в коде.

А с этим вообще стоит связываться?
http://sourceforge.net/projects/fastmm/


 
atruhin ©   (2007-02-13 15:44) [22]

> А с этим вообще стоит связываться?

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


 
roottim ©   (2007-02-13 15:45) [23]

яж говорю пользуюсь.. т.е. работеат

а куго чего некопилируется мне уже по барабану...


 
xayam ©   (2007-02-13 15:55) [24]


> atruhin ©   (13.02.07 15:44) [22]
> > А с этим вообще стоит связываться?
> Однозначно. Только хотел посоветовать. Выдает полный лог,
>  что не освобождено, в каких строках программы выделен данный
> блок,
> состояние стека, следит за попыткой повторного освобождения
> памяти.

че то я не очень понял как ей пользовать, прикомпилировал к своему проекту демо пример, запустил показывает окно с двумя разделами - Memory Map и Block Statistics. Как узнать есть утечки или нет? И что означают цвета в Memory Map?


 
xayam ©   (2007-02-13 16:00) [25]


> И что означают цвета в Memory Map?

А ну с цветами понятно


 
atruhin ©   (2007-02-13 18:31) [26]

Прочитай FastMM4_FAQ.txt.

> прикомпилировал к своему проекту демо пример

Нафига. На то он и демо. К проекту нужно добавить ТОЛЬКО FastMM4, прописать 1 раз,
в dpr файле причем ПЕРВЫМ.
Все остальное настраиваеться в FastMM4Options.inc

В общем читай, там все подробно расписанно.


 
xayam ©   (2007-02-13 19:08) [27]


> atruhin ©   (13.02.07 18:31) [26]
> Прочитай FastMM4_FAQ.txt.
> > прикомпилировал к своему проекту демо пример
> Нафига. На то он и демо. К проекту нужно добавить ТОЛЬКО
> FastMM4, прописать 1 раз,
> в dpr файле причем ПЕРВЫМ.

так это я сразу сделал. А что происходит, если будет утечка памяти? Какое-то сообщение вылезет?


 
Psychedelic ©   (2007-02-13 19:34) [28]


> а где последнюю версию скачать можно? в файлообменной сети
> нашел версию 0.9.50 но ждать наверно долго придется


Ты что пользоваться поисковиками не умеешь?
Еще и разжевать просит. Первый линк в google по запросу выдает свежую версию.

Трындец, ну народ пошел.


 
atruhin ©   (2007-02-13 20:46) [29]

> А что происходит, если будет утечка памяти? Какое-то сообщение
> вылезет?

Все зависит от настроек. У меня при закрытии программы вылазит окошко с краткой информацией об утечках,
полная информация пишется в лог.
См. внимательно FastMM4Options.inc


 
xayam ©   (2007-02-13 21:03) [30]


> atruhin ©   (13.02.07 20:46) [29]
> > А что происходит, если будет утечка памяти? Какое-то сообщение
> > вылезет?
> Все зависит от настроек. У меня при закрытии программы вылазит
> окошко с краткой информацией об утечках,
> полная информация пишется в лог.
> См. внимательно FastMM4Options.inc

уже на два раза пересмотрел файл, не нашел такой настройки, но у меня с аглицким не очень)), хотя уже наверно не нужно memproof"ом нашел источник ошибок.



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

Форум: "Прочее";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.047 c
4-1162292887
dmirror
2006-10-31 14:08
2007.03.11
ProcessMessages


3-1165846925
kymnyoff
2006-12-11 17:22
2007.03.11
Настройка BDE


2-1171957505
Wall
2007-02-20 10:45
2007.03.11
текущая директория


8-1150966362
Crozy
2006-06-22 12:52
2007.03.11
Графические часы


2-1171722811
Andrey-406
2007-02-17 17:33
2007.03.11
Сохранение-загрузка свойств формы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский