forgetting -betterC means no runtime bounds checking?

Tejas notrealemail at gmail.com
Thu Jan 5 11:41:02 UTC 2023


On Thursday, 5 January 2023 at 09:10:00 UTC, areYouSureAboutThat 
wrote:
> I was playing around with betterC, when I discovered, that if i 
> accidently forget to provide -betterC to the compiler, it will 
> still compile this, but, there will be no runtime bounds 
> checking occuring.
>
> My question is: why is there no bounds checking occurring if I 
> forget to use -betterC?
>
> module test;
>
> extern(C) void main()
> {
>     import core.stdc.stdio : printf;
>
>
>     int[5] arr = [ 0, 1, 2, 3, 4];
>
>     for (int i = 0; i < 10; i++) // oops!
>     {
>         printf("%d\n", arr[i]);
>     }
> }

Works on run.dlang.io for me:
```sh
0
1
2
3
4
dmd_runJFfSJW: onlineapp.d:12: Assertion 'array index out of 
bounds' failed.
Error: program killed by signal 6
```

On my personal ldc 1.27.1:
```sh
(base) [tejasgarhewal at fedora ~]$ ldc2 -betterC -run ./D/oob.d
0
1
2
3
4
oob-06265c: ./D/oob.d:9: Assertion 'array overflow' failed.
Error: /tmp/oob-06265c failed with status: -2
        message: Aborted (core dumped)
Error: program received signal 2 (Interrupt)
(base) [tejasgarhewal at fedora ~]$
```


More information about the Digitalmars-d-learn mailing list