Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.10.2007
Сообщений: 160

Помогите побороть утечку памяти.

24.01.2008, 16:53. Показов 2445. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используется две формы:
1) Реализована в программе. Не имеет кнопки типа выход/закрыть. Закрывается через крестик Х. При повторном вызове отъедает у системы не фиговый кусок памяти. И так до бесконечности.

2) Обычный диалог открытия файла. Примерно такой же результат.

Что делать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2008, 16:53
Ответы с готовыми решениями:

Выделение памяти, проверка на утечку памяти
Интересуют два вопроса: 1. Правильно ли устроен алгоритм выделения, удаление и запись ячейки памяти? Может быть, есть более простые...

Найти утечку памяти
Приветствую всех! Много раз слышал, что с помощью CodeGuard можно проверить есть ли в приложении утечка памяти. Подскажите, как это сделать?

Найти утечку памяти
Помогите найти утечку памяти #include <stdio.h> #include <stdlib.h> struct Rebro { int val; struct Rebro *next; }; ...

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.0ata Source=' & App.Path & ';Extended Properties=DBase IV'
'.adoTable.ConnectionString = 'Provider=MSDASQL.1;Persist Security Info=Falseata 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2008, 13:28
Помогаю со студенческими работами здесь

Проверка на утечку памяти
Есть оконное приложение где куча контейнеров и т.д. Как можно проверить, есть ли утечки памяти? (Qt5.7)

Проверка на утечку памяти
Всем доброго времени суток. Сразу оговорюсь, я не профессионал, программирование - моё хобби, которое помогает мне по основному...

Изолировать утечку памяти
Есть давний проект. В нем есть утечка памяти. Разобраться с самой утечкой - долго, там, судя по отзывам в сети, проблемы у компилятора. ...

Определить утечку памяти
Помогите найти утечку памяти. Вот код: #include <stdio.h> #include <stdlib.h> int max(int a, int b) { if (a < b) ...

Выявить утечку памяти
Здравствуйте. Написал парсер с библиотекой для парсинга simple_html_dom. После длительного парсинга видно, что память переполняется. Можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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 будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru