HMG_Upper() function causes a memory leak
Posted: Mon Sep 19, 2016 1:11 pm
I have tested the following code in real Win-XP (32 bit) and Win-7 (64 bit).
Each time you press "Test" button, consumption of memory is increased by approx 600 KB.
Each time you press "Test" button, consumption of memory is increased by approx 600 KB.
Code: Select all
// Press 'Test: HMG_Upper()' and observe memory usage at status bar
#include 'hmg.ch'
FUNCTION Main()
SET FONT TO 'MS Shell Dlg', 8
DEFINE WINDOW MUT_WA;
COL 200;
ROW 100;
WIDTH 340;
HEIGHT 120;
TITLE 'Memory usage test';
MAIN
DEFINE BUTTON Test_BU
COL 10
ROW 20
WIDTH 150
HEIGHT 25
CAPTION 'Test: HMG_Upper()'
ACTION DoTest()
END BUTTON
DEFINE BUTTON Exit_BU
COL 170
ROW 20
WIDTH 150
HEIGHT 25
CAPTION 'Exit'
ACTION MUT_WA.RELEASE
END BUTTON
DEFINE STATUSBAR
STATUSITEM ''
END STATUSBAR
DEFINE TIMER MUT_WA_TI;
INTERVAL 1000;
ACTION UpdateStatus()
ON KEY ESCAPE ACTION MUT_WA.RELEASE
END WINDOW //MUT_WA
UpdateStatus()
MUT_WA.ACTIVATE
RETURN NIL
FUNCTION DoTest()
LOCAL n
LOCAL cString := 'abcdefgh'
FOR n := 1 TO 10000
HMG_Upper(cString)
//HMG_Lower(cString)
//Upper(cString)
//Lower(cString)
//HMG_CallDLL('User32.dll', 0, 'CharUpper', cString)
NEXT
UpdateStatus()
RETURN NIL
FUNCTION UpdateStatus()
MUT_WA.STATUSBAR.Item(1) := 'Memory usage: ' + LTrim(Str(GetProcessMemoryInfo()[3] / 1024, 10, 0) + ' KB')
//RELEASE MEMORY does not work in Win-XP, in Win-7 works
//RELEASE MEMORY
RETURN NIL