![]() |
Delphi. Программа постепенно сжирает всю память.
Программа работает с MSSQL через BDE. Используются TDataBase, TQuery.
Подозреваю вот эту процедурку(выполняется неоднократно): Код:
procedure TMainForm.GetShortcuts; Shortcuts - TShortcuts. ShortcutIcons - TImageList. Код:
TPrice = array of record Спасибо. |
а какие симптомы у больного?
.... edited: пардон... не заметил, по поводу массива... ну ессесно он будет у тебя жрать памяти... тыж в динамический массив засовываешь стринги из запроса... а там небось записей тыщ 10... а если не 10к, то на каждый вызов процедуры ты реалок памяти для массива делаешь, так что если записей мало, но процедура вызывается очень часто, то это вот как раз и есть :) Можно по советовать сделать массив не динамический а статический с каким-нить заранее известным и большим размером - он хоть и будет память жрать, зато не будет так систему напрягать постоянными реалоками... а зачем ты еще раз запихиваешь данные из запроса в массив? если уж приперло именно в массив писать - можно поступить вот так: Код:
PShortcut = ^TShortcuts; |
С Delphi к сожалению не знаком, но очень похоже на memory leaks.
|
это они и есть. но в приведенной процедуре ничего такого не видно...
Sam Dark, обрати внимание на куски кода, в которых есть Create |
Вложений: 1
Вот и первые проблемы. Delphi упал. Что-то я начал сомневаться, что это из за массивов (судя по тексту ошибки).
|
В ошибке как раз и говорится, что недостаточно памяти. Её и массив может заср...ть.
Цитата:
А по поводу массива - /7y3uK тему говорит, только не забывай dispose элементам списка делать. |
Al-x
В том то и дело, что create-ов почти нет. Может ли BDE пакостить? |
:ржать: :ржать:
повторяю - тебе массив твой пакостит - тут вполне можно без него обходиться... BDE тут не при чем... не веришь - попробуй тоже самое, но через ADO сделать... |
/7y3uK
Спасибо, попробую. |
А другие подозреваемые есть, а то тут всё вроде бы чисто? :idontnow:
|
Willow
Даже не знаю... Попробовал как советовал /7y3uK. Памяти расходуется меньше, но съедается по прежнему. Как-то мне говорили, что какой-то из компонентов delphi ест память. |
Думаю это поможет:
http://v.mahon.free.fr/pro/freeware/memcheck/ |
хм... прямо не знаю что еще посоветовать.... делать запрос динамически перед выполнением его создавать а в конце процедуры убивать его... это раз... если не поможет - попробуй таки ADO...
|
Вообще с MSSQL действительно лучше работать через ADO. А что касается утечки памяти, то это здесь не причём.
В Delphi 7 я не замечал, что бы кто-то ел память, а в Delphi 6 было, но настолько не значительно, что заметно только с помощью того, что я дал в ссылке в 12 посту. |
Уже не знаю где это может быть...
В какой-то версии spinedit сжирал всё, но у меня его нет. Может есть ещё какая гадость. Willow Спасибо за ссылку, почитаю. |
не слышал.... вооще то патчи можно по скачивать для дельфи и заплатки всякие на VCL с офф сайта... обычно там пишут что чего и где... у меня не возьникало таких проблем ни разу если честно... правда я в основном ADO пользуюсь...
|
Часовой пояс GMT +4, время: 03:05. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.