Shouldn't the pointers be different

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jan 7 02:56:07 PST 2015


On Wednesday, 7 January 2015 at 10:37:18 UTC, Nick wrote:
> When i try to run the following code
>
> import std.stdio;
>
> void main(){
> 	auto a= new test!int();
>
> 	a.add(0);
> 	a.add(1);
> }
>
> class test(T){
>
> 	void add(T e){
> 		auto temp= new node();
> 		writeln("new node", &temp);
> 	}
>
> 	class node{
> 		T v;
> 	}
> }
> http://dpaste.dzfl.pl/c8e56b5954b8
> The two nodes have the same address, is this right?

I don't know the mechanism by which they are the same (optimiser 
or garbage collector), but there's not reason why they shouldn't 
be.
By the time you get to the second `new node()` the first one is 
completely unreachable, so why not just reuse the memory? 
Considering you don't initialise them differently, the object 
could even just be reused as-is.


More information about the Digitalmars-d-learn mailing list