How to use D without the GC ?

drug007 drug2004 at bk.ru
Wed Jun 12 20:37:36 UTC 2024


On 12.06.2024 21:57, bachmeier wrote:
> On Wednesday, 12 June 2024 at 18:36:26 UTC, Vinod K Chandran wrote:
>> On Wednesday, 12 June 2024 at 15:33:39 UTC, bachmeier wrote:
>>> A SafeRefCounted example with main marked @nogc:
>>>
>>> ```
>>> import std;
>>> import core.stdc.stdlib;
>>>
>>> struct Foo {
>>>   double[] data;
>>>   double * ptr;
>>>   alias data this;
>>>
>>>   @nogc this(int n) {
>>>     ptr = cast(double*) malloc(n*double.sizeof);
>>>     data = ptr[0..n];
>>>     printf("Data has been allocated\n");
>>>   }
>>>  }
>>>
>>> ```
>>>
>> Why not just use `ptr` ? Why did you `data` with `ptr` ?
> 
> Try `foo[10] = 1.5` and `foo.ptr[10] = 1.5`. The first correctly throws 
> an out of bounds error. The second gives `Segmentation fault (core 
> dumped)`.

I think you can use data only because data contains data.ptr


More information about the Digitalmars-d-learn mailing list