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