How to use destroy and free.
    Alain De Vos 
    devosalain at ymail.com
       
    Tue Apr 26 06:45:34 UTC 2022
    
    
  
On Monday, 25 April 2022 at 14:25:17 UTC, H. S. Teoh wrote:
> On Mon, Apr 25, 2022 at 01:28:01PM +0000, Alain De Vos via 
> Digitalmars-d-learn wrote:
>> Could thc or hboehm provide solutions ?
>
> In general, GC (of any kind) does not (and cannot) guarantee 
> the order
> objects will be collected in. So in the dtor, you cannot assume 
> that any
> objects you depend on still exist (they may have already been
> collected).
>
> There is also no guarantee that the object will *ever* get 
> collected: in theory, the GC may only collect just enough to 
> make space for further allocations, it's not obligated to 
> collect *everything* that's collectible. Or the collection 
> might not take place before the end of the program -- the GC 
> may skip the final collection because it knows the OS will 
> reclaim everything automatically anyway.
>
> Basically, deterministic destruction and GC are antithetical to 
> each other, and trying to have both is the road to trouble. If 
> you wish to have deterministic destruction, don't use the GC; 
> use RAII or reference counting instead.
>
>
> T
When you can foresee a "maximum size" , you can create 
"deterministic" stack objects.
```
class C {
	@nogc this(){}
	@nogc this(int dummy){};
	@nogc int[3] fixarr=new int[3];
}//C
@nogc void myfun(){
	int a;
	scope c = new C();
	scope c2 = new C(5);
}//myfun
void main(){
	myfun();
}//main
```
It's just the variable length arrays which are "problematic". 
Feel free to elaborate.
    
    
More information about the Digitalmars-d-learn
mailing list