|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
Помогите побороть утечку памяти.24.01.2008, 16:53. Показов 2445. Ответов 21
Метки нет (Все метки)
Используется две формы:
1) Реализована в программе. Не имеет кнопки типа выход/закрыть. Закрывается через крестик Х. При повторном вызове отъедает у системы не фиговый кусок памяти. И так до бесконечности. 2) Обычный диалог открытия файла. Примерно такой же результат. Что делать?
0
|
|
| 24.01.2008, 16:53 | |
|
Ответы с готовыми решениями:
21
Выделение памяти, проверка на утечку памяти
Найти утечку памяти |
|
Ghost
|
|
| 24.01.2008, 17:26 | |
|
Form_Unload не поможет?
|
|
|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
| 27.01.2008, 12:07 [ТС] | |
|
А чё писать в процедуре Form_Unload?
0
|
|
|
0 / 0 / 0
Регистрация: 30.08.2007
Сообщений: 32
|
|
| 27.01.2008, 12:34 | |
|
Может у тебя при создании формы создаются какие-нибудь объекты (типа set xxx=new yyy) а при выходе не уничтожаются set xxx=nothing?
0
|
|
|
Vsh
|
|
| 27.01.2008, 12:53 | |
|
Переменные формы уничтожаются не при unload, а при terminate
Как правило потеря памяти из за исп-я 'new' |
|
|
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 106
|
|
| 27.01.2008, 13:48 | |
|
Spartak, попробуй в событие Form_unload
написать Set имя_формы=nothing
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
| 30.01.2008, 15:15 [ТС] | |
|
НИ ФИГА НЕ ПОМОГАЕТ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!
0
|
|
|
Ghost
|
|
| 30.01.2008, 16:24 | |
|
Давай код на растерзание.
Или - где живешь? |
|
|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
| 30.01.2008, 16:52 [ТС] | |
|
Следующий код формирует форму, которая жрёт память
Private Sub cmdWithForm_Click() Dim table_name As String, field_names() As String, temp_key() As String Dim field_len() As Variant, temp_value() As Variant Dim counter As Integer Dim height As Long height = 0 temp_key() = commontable_struct.GetAllKeys temp_value() = commontable_struct.GetAllValues ReDim field_names(3 To UBound(commontable_struct.GetAllKeys) + 3) ReDim field_len(3 To UBound(commontable_struct.GetAllKeys) + 3) table_name = Left(application_cfg.GetValue('txtCommon Table'), Len(application_cfg.GetValue('txtCommonT able')) - 4) With frmEditTableWithForm .adoTable.ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0 ata Source=' & App.Path & ';Extended Properties=DBase IV''.adoTable.ConnectionString = 'Provider=MSDASQL.1;Persist Security Info=False ata Source=dBASE Files;Initial Catalog=' & App.Path.adoTable.RecordSource = 'Select * From ' & table_name & ' order by ' & External.GetFieldNameForOrder For counter = 0 To UBound(temp_key) field_names(counter + 3) = temp_key(counter) field_len(counter + 3) = temp_value(counter) Next For counter = 3 To UBound(field_names) - 1 Load .Labels(counter) Load .TextBoxes(counter) .TextBoxes.Item(counter).DataField = field_names(counter) Set .TextBoxes.Item(counter).DataSource = .adoTable .Labels(counter).Top = .Labels(counter - 3).Top + 1.5 * .Labels(0).height .Labels(counter).Left = .Labels(counter - 3).Left .TextBoxes(counter).Top = .TextBoxes(counter - 3).Top + 1.5 * .TextBoxes(counter).height .TextBoxes(counter).Left = .TextBoxes(counter - 3).Left .TextBoxes(counter).Width = 20 * TextWidth('A') .TextBoxes(counter).Locked = True .Labels(counter).Caption = External.FieldNames(field_names(counter) ) '.Labels(counter).Caption = field_names(counter) .Labels(counter).Visible = True .TextBoxes(counter).Visible = True Next .height = 1.5 * .TextBoxes(0).height * (UBound(field_names) + 1) / 3 + 800 .txtFioSearch.Left = .TextBoxes(0).Left .txtFioSearch.Top = .TextBoxes(counter - 1).Top + 1.5 * .TextBoxes(counter - 1).height .txtFioSearch.height = .TextBoxes(counter - 1).height .txtFioSearch.Width = .TextBoxes(counter - 1).Width .txtFioSearch.Visible = True .lblFioSearch.Left = .Labels(0).Left .lblFioSearch.Top = .Labels(counter - 1).Top + 1.5 * .TextBoxes(counter - 1).height .lblFioSearch.height = .Labels(counter - 1).height .lblFioSearch.Width = .Labels(counter - 1).Width .lblFioSearch.Visible = True .cmdPayment.Left = .TextBoxes(1).Left .cmdPayment.Top = .txtFioSearch.Top .cmdPayment.height = .txtFioSearch.height + 100 .cmdPayment.Width = .txtFioSearch.Width .cmdRollback.Left = .TextBoxes(2).Left .cmdRollback.Top = .txtFioSearch.Top .cmdRollback.height = .txtFioSearch.height + 100 .cmdRollback.Width = .txtFioSearch.Width End With frmEditTableWithForm.Show vbModal End Sub
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
| 03.02.2008, 09:41 [ТС] | |
|
ЭТО ПРОСТО УБИЙЦА СИСТЕМНЫХ РЕСУРСОВ!!!!!!!!!
SOS
0
|
|
|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
| 03.02.2008, 10:24 [ТС] | |
|
Всем спасибо. Закрыл рекордсет в Unload. Память возвращается.
0
|
|
|
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 435
|
|
| 14.04.2008, 09:14 | |
|
понимаю что давно закрытая тема, но тем не менее такой вопросец - можно получить список все открытых объектов и потом их позакрывать? прикинте люди как хорошо то получится? то же самое сделать и с формами! лафа всеобщая - не надо парится с лишними головными проблемами!
0
|
|
|
Ghost
|
|
| 14.04.2008, 10:33 | |
|
Легко, если создать собственный диспетчер объектов или знать, где и что поспрошать у системы.
|
|
|
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 435
|
|
| 14.04.2008, 12:41 | |
|
Так то оно да, но может можно сделать что то типа:
for each object in form close.object next диспетчер то зачем?
0
|
|
|
0 / 0 / 0
Регистрация: 22.10.2007
Сообщений: 44
|
|
| 14.04.2008, 12:53 | |
|
А ведь везде написано, что 'End' закроет всё сам.
Правда, если ты используешь API Create Process, Menu и прочую, непредусмотренную фигню (ну, конечно же не фигню, без этого не обойтись. ), то закрывай всё сам. Terminate, Destroed и пр. и др.
0
|
|
|
0 / 0 / 0
Регистрация: 22.10.2007
Сообщений: 44
|
|
| 14.04.2008, 12:54 | |
|
И, разумеется, UnLoad.
0
|
|
|
0 / 0 / 0
Регистрация: 26.12.2007
Сообщений: 435
|
|
| 14.04.2008, 12:59 | |
|
а к чему тогда такие проблемы у человека были? В смысле этот топик из-за чего поднимался то?
0
|
|
|
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596
|
|
| 15.04.2008, 13:39 | |
|
Мужики, пoмoгите!
Ктo-нить пoльзуется Crystal Report Designer? Удoбнo, приятнo, нo кaк oн пa@лa пaмять жрет! Кaк бoрoться? При oткрытии первoй фoрмы с кoмпoнентoм для прoсмoтрa сьедaет 6Мб! Для кaждoй следующей пo 1.5Мб! Мне не жaлкo (у всех пo 256Мб), нo ведь есть же кaкaя-тo сoвесть! Я репoрту дaю ADO Recordset - oн егo oтoбрaжaет. (Кстaти, oн егo зaкрoет или нет?) Пo зaкрытию фoрмы я выгружaю репoрт, НO пo зaкрытию всех фoрм прoсмoтрщикoв первые 6Мб мне не вoзврaщaют! Кaк бoрoться?
0
|
|
|
0 / 0 / 0
Регистрация: 15.11.2007
Сообщений: 45
|
|
| 20.04.2008, 13:09 | |
|
2 suqarde:
Встречный вопрос, а как вы ему вообще это рекордсет подсовываете ???, у меня получилость ему подсовывать только готовый отчет с фиксированным именем ODBC источника.
0
|
|
|
1 / 1 / 0
Регистрация: 09.10.2007
Сообщений: 596
|
|
| 20.04.2008, 13:28 | |
|
2KMV
Есть тaкoй истoчник дaнных Active Data Из негo пoдпункт Active Data (Field Definitions Only). Тaблицa сoздaется пo фaйлу в кoтoрoм лежaт именa и рaзмеры пoлей. Врoде: USERID (tab)LONG(tab)(tab) USERNAME(tab)STRING(tab)16(tab) (tab)-тaбуляция. Именa пoлей игнoрируются, вaжен лишь пoрядoк (кaк я пoнял, хoтя этo и не слишкoм пoнятнo для РБД) У всегo oтчетa есть oбьект Database. В нем есть кoллекция типa DatabaseTable A вoт у них (в яйце нa кoнце у зaйцa вo двoрце) есть метoд SetDataSource. Принимaет DAO,ADO,CDO. Зa пoдрoбнoстями RTFM. Кстaти, в примерaх все именнo тaк и делaется. 2мне Нет, тoвaрищ! Рекoрдсеты не зaкрывaются и чтo сaмoе дурнoе не вoзврaщaются. (нет GetDataSource - не нaшёл). Успехoв! Стaнислaв
0
|
|
| 20.04.2008, 13:28 | |
|
Помогаю со студенческими работами здесь
20
Проверка на утечку памяти Проверка на утечку памяти Изолировать утечку памяти Определить утечку памяти Выявить утечку памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции:
Установка Android SDK, NDK, JDK, CMake и т. д.
Перейдите по ссылке:. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|