Determinando o tamanho do array após a alocação dinâmica em C
Em C , os arrays alocados dinamicamente usando o operador new não expõem inerentemente seu tamanho de forma programática. Esta questão surge da observação de que delete[] deve estar ciente do tamanho do array alocado para desalocar a memória de forma eficaz.
Por que nenhuma função integrada para obter o tamanho do array?
Ao contrário dos arrays declarados na pilha, cujo tamanho pode ser determinado usando sizeof(), o tamanho dos arrays alocados dinamicamente é desconhecido durante a compilação. Isso ocorre porque o gerenciador de memória do tempo de execução ou do sistema operacional gerencia a memória alocada, não o compilador. sizeof() opera como uma constante de tempo de compilação e não pode avaliar dinamicamente tamanhos de matrizes alocadas dinamicamente.
Estratégias Alternativas
Mesmo que C não forneça um função para obter o tamanho do array, existem abordagens alternativas:
int *arr = new int[256]; int *p = &arr[100]; int size = p - arr; // Subtracting pointers yields the size
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3