Can't understand if deallocation happens?
    Adam D. Ruppe via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Sun Jan 22 05:57:22 PST 2017
    
    
  
On Sunday, 22 January 2017 at 12:49:11 UTC, Suliman wrote:
>     writeln(str_ptr);
> 	
>     writeln("before dealloc: ", str_ptr.length);
>     GC.free(str_ptr.ptr);
>     writeln(str_ptr);
You freed the CONTENTS, but are printing the CONTAINER.
str_ptr.ptr returns exactly the same thing as str.ptr or 
(*str_ptr).ptr, a pointer to the contents. When you write 
str_ptr, you print the pointer to the container.
The container isn't moving, it is a stack variable and not 
managed by GC. If you want to see changes to the content pointer, 
just use it.
string* in D is rarely what you want and I suggest you avoid 
using it until you have a strong grasp on the fundamentals of how 
arrays and pointers work. You're just confusing yourself by 
trying it right now.
> Is it's address from 0 of current App memory?
it is the virtual address space, the app doesn't necessarily use 
all the possible values.
    
    
More information about the Digitalmars-d-learn
mailing list