Reuse object memory?

Namespace via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 20 15:12:15 PDT 2015


On Monday, 20 April 2015 at 21:58:59 UTC, Ali Çehreli wrote:
> On 04/20/2015 02:44 PM, Namespace wrote:
>
> > Thank you. Do you mean this is worth a PR, to add this
> > functionality to Phobos?
>
> I am not familiar with such a need so I don't have a strong 
> opinion.
>
> However, if an object needs to be emplaced on top of an 
> existing one, I can imagine that the original object was 
> emplaced on some piece of memory anyway. In that case, the 
> problem becomes "emplacing an object on a piece of memory", 
> which is already supported by std.conv.emplace.
>
> Your idea seems to be for the case where the original object is 
> created by some third party code, and that they want us to 
> replace it with another object. If they are aware of the 
> wholesale change in the object, fine. :)
>
> Ali

I have currently an array of objects which may be reloaded (it's 
a tilemap). If the array is reused, I can do that with:
----
arr.length = 0;
arr.assumeSafeAppend();
----
But then I thought: why not reuse the memory of the objects?
In C++ you can do that very elegant, but in D I have to produce 
garbage since the old object stays alive until the GC collects it 
and I have to allocate new GC memory.


More information about the Digitalmars-d-learn mailing list