>>>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.