Garbage Collector : Ignoring a reference

Namespace via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 30 02:52:19 PDT 2016


On Tuesday, 26 April 2016 at 09:07:59 UTC, Begah wrote:
> I am trying to create an asset manager for my textures. I had 
> the idea ( it may be a wrong idea ) to create a hashmap of my 
> textures with a string as the key. When the program request a 
> texture, it firts check if it is in the hashmap and then 
> returns if it is :
>
> Texture[string] textures;
>
> Texture loadTexture(string filename) {
>   if(filename in textures)
>     return textures[filename]
>   else
>     // Load image and put it in hashmap
> }
>
> Warning : I haven't tested if it actually doesn't work, but 
> thinking about it, i think it should not.
> My problem is that i return a reference of the texture to the 
> program, but i keep one to myself and i want to free the 
> texture if my program isn't using it anymore ( no more 
> reference to it ). The problem i see, is that i will always 
> have atleast one reference to the texture in my hashmap, but i 
> want the garbage collector to ignore that reference and to free 
> the texture if there are no more references anywhere in my 
> program ( except in the hashmap ).
>
> How could i tell the garbage collector to ignore the reference 
> in the hashmap and to free it if there isn't any other 
> reference that in my hashmap?

Texture[string] textures;

Texture* loadTexture(string filename) {
   if(filename in textures)
     return &textures[filename]
   else
     // Load image and put it in hashmap
}

Texture* tex = loadTexture(...);


More information about the Digitalmars-d-learn mailing list