Conteúdo do Curso
Fundamentos de C
Fundamentos de C
Ponteiros estão ao nosso redor
Provavelmente você já está familiarizado com a ideia de ponteiros a partir de suas experiências cotidianas. Pense em como sua casa tem um endereço único. É através desse endereço que você recebe pacotes da Amazon, cartas e aquela pizza que você acabou de pedir. Essencialmente, para chegar até você, pessoas e serviços usam o endereço da sua casa.
Quando uma casa muda de mãos, é essencial atualizar os registros para refletir os detalhes do novo proprietário. E se sua família crescer, é crucial adicionar os novos membros aos registros associados ao endereço.
Os registros de propriedade estão sendo constantemente atualizados. Alguns dados são modificados, alguns são excluídos, enquanto novos detalhes são adicionados.
Vamos considerar outro exemplo - desenvolver um sistema de segurança para seu escritório. O desenvolvedor pode não saber o número exato de funcionários que você terá. Então, no código, ele pode alocar espaço para 100 funcionários:
Essa configuração é bastante básica e inerentemente limitada desde o início.
Mas e se sua empresa expandir, lançando um novo departamento, e recrutar 30 novos funcionários qualificados, totalizando 130? No entanto, o sistema de segurança está configurado apenas para reconhecer 100. Você reformula todo o sistema de segurança ou dispensa os novos contratados? Esse dilema é resolvido através da alocação dinâmica de memória.
Alocação Dinâmica de Memória
Na linguagem C, existem três tipos de alocação de memória:
- Alocação estática, que ocorre em tempo de compilação. Por exemplo, quando o compilador vê que você declarou uma variável
int
, ele aloca 4 bytes para ela; - Alocação automática de memória ocorre dentro de funções, particularmente quando variáveis são declaradas dentro dessas funções;
- Alocação dinâmica de memória se destaca porque a memória é atribuída não na fase de compilação, mas durante a execução real do seu programa.
A alocação dinâmica de memória dá ao programador controle total, pois ele supervisiona tanto a alocação quanto a desalocação de memória. Essa abordagem permite que um programador otimize significativamente o desempenho de um programa, com ponteiros desempenhando um papel fundamental nesse processo.
Obrigado pelo seu feedback!