LOCAL i, starttime FOR i = 1 TO 10000 WAIT WINDOW "Count Number: " + ALLTRIM(STR(i)) NOWAIT RunCode() ENDFOR FUNCTION RunCode() LOCAL oObjectFactory as Object, oProducedObject as Object oObjectFactory = CREATEOBJECT("ObjectFactory") oProducedObject = oObjectFactory.ReturnAnObject() && Fix number 1 (Real fix in _assign method below) && Uncommenting this assignment will keep C5 from && happening && oObjectFactory = "" ENDFUNC DEFINE CLASS ObjectFactory as Custom oObjectRef = "" FUNCTION ReturnAnObject() as Object LOCAL oObjectRef as Object oObjectRef = CREATEOBJECT("ProducedObject") && This assignment is in a sense the problem oObjectRef.Configuration = THIS RETURN oObjectRef ENDFUNC ENDDEFINE DEFINE CLASS ProducedObject as Custom &&If class definition is small &&enough a C5 may not occur. &&5 or less of a combination of array member &&or member with assign method will not &&cause C5 error but will create a memory leak Configuration = "" &&Members with assign methods MemberString1 = "" MemberString2 = "" MemberString3 = "" MemberString4 = "" MemberString5 = "" DIMENSION MemberArray1(1) DIMENSION MemberArray2(1) DIMENSION MemberArray3(1) DIMENSION MemberArray4(1) DIMENSION MemberArray5(1) DIMENSION MemberArray6(1) FUNCTION Configuration_Assign(oObjectRef as object) IF TYPE("oObjectRef.Class") = "C" && If this next assignment isn't made a C5 may occur && if the reference to oOjectRef is explicitly && release somewhere higher in call stack. *!* THIS.Configuration = oObjectRef ENDIF ENDFUNC ********************************************************* FUNCTION MemberString1_Access() RETURN THIS.MemberString1 ENDFUNC FUNCTION MemberString1_Assign(StringValue as String) IF TYPE("StringValue") = "C" THIS.MemberString1 = StringValue ENDIF ENDFUNC ********************************************************* ********************************************************* FUNCTION MemberString2_Access() RETURN THIS.MemberString2 ENDFUNC FUNCTION MemberString2_Assign(StringValue as String) IF TYPE("StringValue") = "C" THIS.MemberString2 = StringValue ENDIF ENDFUNC ********************************************************* ********************************************************* FUNCTION MemberString3_Access() RETURN THIS.MemberString3 ENDFUNC FUNCTION MemberString3_Assign(StringValue as String) IF TYPE("StringValue") = "C" THIS.MemberString3 = StringValue ENDIF ENDFUNC ********************************************************* ********************************************************* FUNCTION MemberString4_Access() RETURN THIS.MemberString4 ENDFUNC FUNCTION MemberString4_Assign(StringValue as String) IF TYPE("StringValue") = "C" THIS.MemberString4 = StringValue ENDIF ENDFUNC ********************************************************* ********************************************************* FUNCTION MemberString5_Access() RETURN THIS.MemberString5 ENDFUNC FUNCTION MemberString5_Assign(StringValue as String) IF TYPE("StringValue") = "C" THIS.MemberString5 = StringValue ENDIF ENDFUNC ********************************************************* ENDDEFINE