Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Zerg1
0 / 0 / 0
Регистрация: 04.05.2010
Сообщений: 52
1

В моей программе на VB6 победить memory leak!

10.06.2016, 01:02. Просмотров 815. Ответов 2
Метки нет (Все метки)

Имею такой bas модуль :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Attribute VB_Name = "Proc"
Option Explicit
 
Dim y As Byte
 
Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Const PROCESS_ALL_ACCESS = &H1F0FFF
Const SB_GETTEXT = &H40D
 
Public Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
    End Type
 
Global PrEntry As PROCESSENTRY32
 
Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
 
Public Function CountProcess(ByVal pn As String) As Long
Dim Handle As Long, r As Long, hP As Long, RetVal As Long, npr As Long
npr = 0
Handle = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
PrEntry.dwSize = Len(PrEntry)
r = Process32First(Handle, PrEntry)
Do While r
    If InStr(1, PrEntry.szExeFile, pn, 1) > 0 Then
        npr = npr + 1
        End If
    r = Process32Next(Handle, PrEntry)
    Loop
CountProcess = npr
End Function


нужен мне для подсчета числа работающих процессов с заданным фрагментом имени
работает нормально, если юзать периодически
как только я повесил на таймер вызов этой функи с интервалом полсекунды, так сразу стала течь выделяемая виндой память
1 мегабайт за 5-6 секунд
под XP
в таскменеджере сам процесс моей проги занимает стабильно 9 мег
но занимаемая виндой память растет
выходишь из проги, память и вся потерянная память возращается в систему обратно
что не так? ХЭЛП!!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2016, 01:02
Ответы с готовыми решениями:

Ошибки в программе VB6
Здравствуйте! Я пытаюсь освоить азы по книге "Использование VB6" установил...

Логгирование в программе на vb6.0
Есть ли возможность как то выводить в лог-файл все действия программы? Но так...

Как воспроизводить музыку в программе VB6?
не могу воспроизвести :?:

VB6 Придать графичности/артистизма программе. ХЭЛП!
Всемприветпомогитя! Написал на vb6 довольно большой проект, стратегическую...

Контроль длины Label. А также VB6 Portable vs VB6 Installed.
Исходя из заголовка темы, вопроса 2: 1.) Как определить, что в Label уже не...

2
The trick
Модератор
7365 / 2583 / 755
Регистрация: 22.02.2013
Сообщений: 3,799
Записей в блоге: 76
10.06.2016, 08:23 2
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Нужно вызывать CloseHandle для закрытия описателя снапшота.
1
Zerg1
0 / 0 / 0
Регистрация: 04.05.2010
Сообщений: 52
11.06.2016, 12:58  [ТС] 3
спасибо!!! работает!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.06.2016, 12:58

Windows 2000 Rus VB6, VB6 Resource Editor отсутствует
В Windows 2000 Rus + SP3 проинсталлировал Visual Studio 6 + MSDN Full (вся...

Memory leak
Здравствуйте, коллеги. В программе наблюдается утечка памяти. Наблюдается...

Memory leak
Всем добрый день. Помогите пожалуйста разобраться, проверяю приложение в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru