BUG: Placing Icons in Picture Object Causes Memory LeakLast reviewed: November 26, 1997Article ID: Q176765 |
The information in this article applies to:
SYMPTOMSA program that loads a series of icon files into the Picture property of a FoxPro image object causes a memory leak in Visual FoxPro 3.0b and 5.0x. Eventually, the operating system becomes unstable and the computer locks.
CAUSELoading the icon files may create a leak in process memory. As the program runs, increasing amounts of RAM are consumed. When the program starts using virtual memory, performance suffers and the computer may lock.
RESOLUTIONHere are two workarounds:
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATION
Steps to Reproduce BehaviorWARNING: Running the code below causes a low memory situation on the computer. This condition may cause the operating system to become unstable. Close all open applications and save your data before using this procedure. In Windows 95 and Windows NT, press the CTRL+ALT+DEL keys simultaneously to invoke the Close Dialog window or the Task Manager, respectively. Create and run a program that contains the following code:
LOCAL ARRAY laIcons[1,1] LOCAL loForm, lnI, lnFile, lnFiles loForm = CREATEOBJECT('Form') loForm.HEIGHT = 600 loForm.WIDTH = 200 FOR lnI = 1 TO 10 loForm.ADDOBJECT('imgObject' + ALLTRIM(STR(lnI)), 'Image') WITH loForm.CONTROLS[lnI] .LEFT = 10 .TOP = 10 + (lnI ) * 50 .WIDTH = 25 .HEIGHT = 25 .VISIBLE = .T. ENDWITH ENDFOR loForm.ADDOBJECT('lblCounter', 'Label') loForm.lblCounter.TOP = 1 loForm.lblCounter.LEFT = 1 loForm.lblCounter.AUTOSIZE = .T. loForm.lblCounter.VISIBLE = .T. loForm.SHOW() lnFiles = ADIR(laIcons, HOME() ; + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\*.ICO') FOR lnI = 1 TO 1000 loForm.lblCounter.CAPTION = 'Loop :' + PADL(lnI, 4) FOR lnFile = 1 TO lnFiles - 10 loForm.CONTROLS[ 1].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\' + laIcons[lnFile , 1] loForm.CONTROLS[ 2].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\' + laIcons[lnFile+1, 1] loForm.CONTROLS[ 3].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\'+ laIcons[lnFile+2, 1] loForm.CONTROLS[ 4].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\'+laIcons[lnFile + 3, 1] loForm.CONTROLS[ 5].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\'+laIcons[lnFile + 4, 1] loForm.CONTROLS[ 6].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\'+laIcons[lnFile + 5, 1] loForm.CONTROLS[ 7].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\'+laIcons[lnFile + 6, 1] loForm.CONTROLS[ 8].PICTURE = ; HOME() + 'SAMPLES\GRAPHICS\ICONS\COMPUTER\' + laIcons[lnFile+7, 1] loForm.CONTROLS[ 9].PICTURE = ; HOME()+'SAMPLES\GRAPHICS\ICONS\COMPUTER\' + laIcons[lnFile + 8, 1] loForm.CONTROLS[10].PICTURE = ; HOME()+'SAMPLES\GRAPHICS\ICONS\COMPUTER\' + laIcons[lnFile + 9, 1] IF INKEY(0.001, 'HM') = 27 CANCEL ENDIF ENDFOR ENDFORThe first indication of a memory problem appears when the icons no longer appear in the individual image objects. The number of iterations before this symptom appears depends on the amount of physical RAM installed on the computer. Once the memory leak consumes all the physical RAM, Visual FoxPro begins using virtual memory. At this point, performance suffers greatly and the operating system may lock.
REFERENCESVisual FoxPro Help 3.0b, 5.0, 5.0a; search on: Visual FoxPro HWND Control
|
Additional query words:
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |