Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 31.10.2012
Сообщений: 9
1

Утечка памяти в vbs

12.02.2010, 16:23. Показов 1866. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пришлось работать с vbs. Наткнулся на непонятную проблему. При выполнении скрипта медленно но верно уходит память. И что самое удивительное, при остановке скрипта также медленно и верно память высвобождается! Не знаю, можно ли динамически выделять память в vbs, но я этим точно не занимаюсь. Особенности: скрипт исполняется внутри сторонней программы плюс в скрипте используется одна сторонняя функция TM(...). Насколько мне известно, подобные скрипты работали без проблем с этой функцией в этой же программе. Скрипт выполняет проверку телеизмерений ( TM("#TТ"...) ) и генерирует телесигнал ( TM("#TC"...) ). Подскажите, где могла произойти утечка памяти? Вот код:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
function stateValue(k, j)
    val = 0
    asdf = 0
    for i = 1 to tc_amount_in_tit
        On Error Resume Next
        asdf = TM("#TC"+CStr(channel)+":"+CStr(k) + ":" + CStr(i + (j-1)*tc_amount_in_tit) + "{}")*2^(i-1)
        If Err.Number <> 0 Then
             Err.Number = 0
        Else
            val = val + asdf
        End If
    next
    stateValue = val
end function
 
function doTC(k, channel)
    On Error Resume Next
    tmpVal = -1
    tmpVal = TM("#TT"+CStr(channel)+":"+CStr(k) + ":1001")
    if (tmpVal <> -1) then
        for j = 1 to tit_amount
            val = stateValue(k, j)
            tmpVal = -1
            tmpVal = TM("#TT"+CStr(channel)+":"+CStr(k)+ ":" + CStr(1000 + j))
            if(tmpVal <> -1) then
                if  tmpVal <> val then
                    if IsEmpty(TM("#TC"+CStr(channel)+":"+CStr(k)+ ":1000")) then
                        TM("#TC"+CStr(channel)+":"+CStr(k)+ ":1000") = 0
                    end if
                    If Err.Number <> 0 Then
                        Err.Number = 0
                        TM("#TC"+CStr(channel)+":"+CStr(k)+ ":1000") = 0
                    end if
                    TM("#TC"+CStr(channel)+":"+CStr(k)+ ":1000") = not(TM("#TC"+CStr(channel)+":"+CStr(k) + ":1000{}"))
                    TM("#TT"+CStr(channel)+":"+CStr(k)+ ":" + CStr(1000 + j)) = stateValue(k, j) 'val
                    exit for
                end if
            end if
        next
    end if
end function
 
'constants
max_channel = 16
sleep_time = 2500
tit_amount = 6
tc_amount_in_tit = 24
max_kp = tit_amount*tc_amount_in_tit
 
'initialize every tit in each kp in each channel
for channel = 1 to max_channel
    On Error Resume Next
    TM("#TT"+CStr(channel)+":"+CStr(k)+ ":1001") = 0
    If Err.Number <> 0 Then
        Err.Number = 0
    Else
        for k = 1 to max_kp
            On Error Resume Next
            TM("#TT"+CStr(channel)+":"+CStr(k)+ ":1001") = 0
            tmpVal = -1
            tmpVal = TM("#TT"+CStr(channel)+":"+CStr(k)+ ":1001")
            if (tmpVal <> -1) then
                for j = 1 to tit_amount
                    TM("#TT"+CStr(channel)+":"+CStr(k)+ ":" + CStr(1000 + j)) = 0
                    val = stateValue(k, j)
                    TM("#TT"+CStr(channel)+":"+CStr(k)+ ":" + CStr(1000 + j)) = val
                next
            end if
            tmpVal = -1
        next
    End If
next
 
while true
    for channel = 1 to max_channel
        for k = 1 to max_kp
            call doTC(k, channel)
        next
    next
    Sleep(sleep_time)
wend
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2010, 16:23
Ответы с готовыми решениями:

Создание бинарного файла из vbs / Как создать exe файл из vbs
Имеется файл с расширением exe. Нужно как-нибудь занести массив байт в скрипт, и чтоб потом этот...

Утечка памяти в VBS+ADO
Hi, All! Никто не сталкивался - открытие/закрытие соединения через ADO приводит к утечке памяти...

HttpWebRequest, расход памяти непомерно больших объемов и , как следствие, утечка памяти
Добрый вечер. Мне была поставлена такая задача. Написать приложение, которая загружает из списка...

Вектор, утечка памяти, функция создания и выделение памяти
Здравствуйте. Есть проблема. функция malloc выделяет память лишь в функции CreateVector(), и при...

0
12.02.2010, 16:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2010, 16:23
Помогаю со студенческими работами здесь

Утечка памяти
Условие : Деревом поиска называется двоичное дерево, в котором слева от каждой вершины находятся...

Утечка памяти в
Кто подскажет плиз. Тут у меня утечка памяти foreach (var file in xpsFiles) ...

Утечка памяти
Здравствуйте. Столкнулся со следующей проблемой. Код: $countQuery = 'SELECT COUNT(*) FROM...

Утечка памяти
Кто подскажет плиз. Тут у меня утечка памяти foreach (var file in xpsFiles) ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru