ExpertiDict

C# · Avançado · Inglês · Técnico

stackalloc

/ˈstæk əˌlɑk/palavra-chave

Operador que aloca um bloco de memória na stack da thread atual, liberado ao fim do método. Com Span<T> não exige código unsafe e evita alocar no heap.

Onde usar

Aparece em código de desempenho para buffers pequenos e temporários, como formatar um número. Mantenha o tamanho pequeno e limitado, porque estourar a stack derruba o processo sem exceção capturável.

Em código

Span<int> buf = stackalloc int[4];
buf[0] = 10;
buf[1] = 20;
Console.WriteLine(buf[0] + buf[1]); // 30

Exemplos

We use stackalloc for this small temporary buffer.

Usamos stackalloc para esse buffer temporário pequeno.

Don't stackalloc a size that comes from user input.

Não faça stackalloc de um tamanho vindo da entrada do usuário.

Cuidado

Não aloque tamanhos vindos de entrada externa nem use dentro de laços: a memória só é liberada no fim do método.

Origem

Junção de stack e allocate, 'alocar na pilha'.

Veja também

Todos os termos de C#