ATPS Estrutura de dados
As declarações abaixo alocam memória para diversas variáveis. A alocação é estática, pois acontece antes que o programa comece a ser executado:
• Ao se declarar uma variável qualquer, o compilador deixa reservado um espaço suficiente na memória para armazená-la;
• Ao fazer a alocação estática, apenas o espaço necessário na memória é reservado;
• O conteúdo de cada posição não é alterado, e portanto uma variável apenas declarada pode conter qualquer coisa;
Inicializar as variáveis, atribuindo valores, antes do uso. Inclusive vetores, matrizes e strings:
int a; // 04 bytes char b; // 01 byte unsigned char ch; // 01 byte char nome[40]; // 40 bytes float c; // 04 bytes
Às vezes, a quantidade de memória a alocar só se torna conhecida durante a execução do programa. Para lidar com essa situação é preciso recorrer à alocação dinâmica de memória. A alocação dinâmica é gerenciada pelas funções malloc e free, que estão na biblioteca stdlib. Para usar esta biblioteca, é preciso dizer:
#include no início do programa.
Uso da memória:
– uso de variáveis globais (e estáticas): espaço reservado para uma variável global existe enquanto o programa estiver sendo executado;
– uso de variáveis locais: espaço existe apenas enquanto a função que declarou a variável está sendo executada, e liberado para outros usos quando a execução da função termina;
– variáveis globais ou locais podem ser simples ou vetores: para vetor, é necessário informar o número máximo de elementos, pois o compilador precisa calcular o espaço a ser reservado;
– alocação dinâmica: espaço de memória é requisitado em tempo de execução, permanecendo reservado até que seja explicitamente liberado; depois de liberado, o espaço estará disponibilizado para outros usos e não pode mais ser acessado; o espaço alocado e não liberado explicitamente, será automaticamente liberado ao final da execução.
Funções