>>>>I wonder whether I could get some feedback on the following problems.
>>>>
>>>>I have a few lines of codes to create an object, use it, and release it later.
>>>>
>>>>o1 = createobject("my_object")
>>>>......
>>>>
>>>>oCurrent = o1
>>>>... do something with oCurrent ....
>>>>
>>>>o1.next = createobject("my_object")
>>>>oCurrent = o1.next
>>>>... do somethig with oCurrent ....
>>>>
>>>>&& now I try to release to objects
>>>>release oCurrent
>>>>release o1
>>>>
>>>>My questions are:
>>>>1. does oCurrent = o1.next copy the object or just the reference of the object?
>>>
>>>A reference is copied. Any change done on one variable will be seen as changes in the other variable.
>>>
>>>>2. does release oCurrent release the memory acquired in 2nd createobject?
>>>
>>>I understand an object gets destroyed as soon as there are no references to it:
>>>
>>>
>>>o1 = CreateObject(...)
>>>o2 = o1
>>>release o1
>>>release o2
>>>
>>>
>>>I seldom release objects explicitly; note that when an object variable gets out of scope, the object gets destroyed (if there are no more references to it). However, in some situations there are cross-references that avoid objects from being destroyed ("dangling object references"). This will usually happen with properties of an object, that have a reference to another object. In this case, you can assign NULL to the property, as part of the cleanup process.
>>>
>>>>3. does release o1 release the memory for both createobject(...) even without the release oCurrent?
>>>
>>>As long as there are references to an object, the object remains in memory.
>>
>>Thanks for the response. Do you mean as long as an object gets no reference it will be released? If yes, then when the garbage will be collected?
>
>vfp uses a "resources/time" garbage collector. It needs to have trust that works.
Ok, I'll trust it. Thanks. :)