xplshn
·
2025-08-13
da.b
B
1W; ITEMS; COUNT; CAPACITY;
2
3da_append(da, x) {
4 extrn realloc;
5
6 if (da[COUNT] >= da[CAPACITY]) {
7 if (da[CAPACITY]) da[CAPACITY] *= 2;
8 else da[CAPACITY] = 256;
9
10 da[ITEMS] = realloc(da[ITEMS], da[CAPACITY] * W);
11 }
12 da[ITEMS][da[COUNT]++] = x;
13}
14
15main() {
16 W = &0[1];
17
18 auto i;
19 i = 0;
20 ITEMS = i++;
21 COUNT = i++;
22 CAPACITY = i++;
23
24 // Allocating Dynamic Array structure on the stack
25 auto da 3;
26 da[ITEMS] = 0;
27 da[COUNT] = 0;
28 da[CAPACITY] = 0;
29
30 auto n; n = 10;
31 i = 0; while (i < n) da_append(da, (++i)*2);
32
33 extrn printf;
34 printf("xs_items = %p\n", da[ITEMS]);
35 printf("xs_count = %zu\n", da[COUNT]);
36 printf("xs_capacity = %zu\n", da[CAPACITY]);
37 i = 0; while (i < n) {
38 printf("%zu => %d\n", i, da[ITEMS][i]);
39 ++i;
40 }
41}