42 lines
1.2 KiB
D
42 lines
1.2 KiB
D
// All D arrays are capable of bounds checks.
|
|
|
|
import std.stdio, core.stdc.stdlib;
|
|
import std.container: Array;
|
|
|
|
void main() {
|
|
// GC-managed heap allocated dynamic array:
|
|
auto array1 = new int[1];
|
|
array1[0] = 1;
|
|
array1 ~= 3; // append a second item
|
|
// array1[10] = 4; // run-time error
|
|
writeln("A) Element 0: ", array1[0]);
|
|
writeln("A) Element 1: ", array1[1]);
|
|
|
|
// Stack-allocated fixed-size array:
|
|
int[5] array2;
|
|
array2[0] = 1;
|
|
array2[1] = 3;
|
|
// array2[2] = 4; // compile-time error
|
|
writeln("B) Element 0: ", array2[0]);
|
|
writeln("B) Element 1: ", array2[1]);
|
|
|
|
// Stack-allocated dynamic fixed-sized array,
|
|
// length known only at run-time:
|
|
int n = 2;
|
|
int[] array3 = (cast(int*)alloca(n * int.sizeof))[0 .. n];
|
|
array3[0] = 1;
|
|
array3[1] = 3;
|
|
// array3[10] = 4; // run-time error
|
|
writeln("C) Element 0: ", array3[0]);
|
|
writeln("C) Element 1: ", array3[1]);
|
|
|
|
// Phobos-defined heap allocated not GC-managed array:
|
|
Array!int array4;
|
|
array4.length = 2;
|
|
array4[0] = 1;
|
|
array4[1] = 3;
|
|
// array4[10] = 4; // run-time exception
|
|
writeln("D) Element 0: ", array4[0]);
|
|
writeln("D) Element 1: ", array4[1]);
|
|
}
|