Matriz de comprimento variável local

durante algum refator de código em C ++, eu encontro as seguintes matrizes de comprimento variável local

void some_function(uint8_t length, uint8_t id, uint8_t * bytes)) {
    uint8_t string[length + 8];
    //some transformation on string [1-8] elements

    do_something(string);
}

Não estou familiarizado com o C99, mas o uso do tamanho da matriz de comprimento variável [x + y] parece que isso será colocado no heap. Também depuro essa função para garantir que essa variável "string" seja colocada na pilha e seja. Em C, as variáveis locais não podem ter tamanho fixo; portanto, elas não são necessárias para limpar depois de usá-las. Mas aqui temos uma matriz de tamanho fixo sem alocação de memória, então não há necessidade de limpar após essa variável, mas como o compilador GCC gerencia essa memória?

Ou talvez de outra maneira para esclarecer o que estou considerando aqui: a variável length é proveniente de E / S externa, portanto, na minha opinião, pode haver um problema de segurança (por exemplo, quando length será o valor INTEGER_MAX), além de verificar o tamanho do comprimento que outras ações podem ser levado para ter um código seguro aqui? Ou talvez já esteja seguro?

questionAnswers(2)

yourAnswerToTheQuestion