Malloc к списку структур в Zig?

Как я могу динамически выделить пространство памяти и получить указатель на список структур в Zig.

Как в C:

struct Foo* my_array_of_foo = (struct Foo*) malloc(10*sizeof(Foo));

1 ответ

Решение
const allocator: *std.mem.Allocator = std.heap.page_allocator;
const my_slice_of_foo: []Foo = allocator.alloc(Foo, 10);

Это выделит фрагмент с len 10. Позже его можно освободить с помощью allocator.free(my_slice_of_foo)

В zig массивы обычно представлены в виде фрагментов, содержащих указатель и количество элементов (struct {ptr: [*]type, len: usize}). Распределители имеют функцию.create(type) выделить место для одного значения и вернуть указатель, а функция .alloc(type, count) для выделения непрерывного массива и возврата фрагмента.

Другие вопросы по тегам