|
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160
|
|
Помогите побороть утечку памяти.24.01.2008, 16:53. Показов 2489. Ответов 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
Проверка на утечку памяти Проверка на утечку памяти Изолировать утечку памяти Определить утечку памяти Выявить утечку памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|