Форум программистов, компьютерный форум, киберфорум
Наши страницы

Visual Basic

Войти
Регистрация
Восстановить пароль
 
Zerg1
0 / 0 / 0
Регистрация: 04.05.2010
Сообщений: 52
#1

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

10.06.2016, 01:02. Просмотров 170. Ответов 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 победить memory leak! (VB):

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

Логгирование в программе на vb6.0 - Visual Basic
Есть ли возможность как то выводить в лог-файл все действия программы? Но так чтоб это было не так трудоёмко добавлять в уже готовую...

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

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

Windows 2000 Rus VB6, VB6 Resource Editor отсутствует - Visual Basic
В Windows 2000 Rus + SP3 проинсталлировал Visual Studio 6 + MSDN Full (вся студия на 6 CD-R). В VB6 “Add-In Manager” всего три компонента,...

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

2
The trick
Модератор
7288 / 2506 / 746
Регистрация: 22.02.2013
Сообщений: 3,621
Записей в блоге: 74
10.06.2016, 08:23 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нужно вызывать 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
Привет! Вот еще темы с ответами:

Memory leak - C++ WinAPI
Здравствуйте! Люди, очень интересная проблема возникла у моего друга. Программа считывает с файла данные точек и фэйсов и затем рисует...

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

Memory leak - C#
Здравствуйте, коллеги. В программе наблюдается утечка памяти. Наблюдается совершенно четко - пользовал CLR Profiler и PerfMon. Код не...

Memory Leak in IE 5.0 - Windows
Утечка памяти до беспамятства системы :) Замечали такое за ИЕ? Может знает кто в чем дело?


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

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

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