m_pTGamePlayScreen is a field of the TReferee object. TReferee exists throughout the life of the game. it is not going to fall out of scope?
OK, so the TReferee object's m-pTGamePlayScreen field (which you have set to null) will no longer reference the
TGamePlayScreen object. If the TGamePlayScreen object is not on a list and nothing else references it, the memory it used will be freed next (or returned to the 'pot') next time GC is run.
As far as I know there is nothing that can list existing objects.
Global alllist=CreateList()
Type treferee
Field t2:ttest
End Type
Type ttest
Field t1:ttest1
End Type
Type ttest1
End Type
Graphics 640,480
For x = 0 To 5000
Cls
mynew:treferee = New treferee
mynew.t2:ttest = New ttest
mynew.t2.t1:ttest1=New ttest1
ListAddLast alllist,mynew.t2.t1
DrawText GCMemAlloced(),0,0
' ListRemove alllist,mynew.t1
mynew.t2 = Null
DrawText GCMemAlloced(),0,20
DrawText x,0,40
Flip
Next
I might be missing something here but you keep adding to the question. It might be best to post the smallest example which shows the problem.