trabalho
Instituto de Ciências Matemáticas e de Computação
Alocação Dinâmica em C
Profa Rosana Braga
Adaptado de material preparado pela profa
Silvana Maria Affonso de Lara
1º semestre de 2010
1
Roteiro da Aula
Alocação Dinâmica de Memória
Vetores e alocação dinâmica
Alocação da memória principal
Funções para alocar e liberar memória
Alocação dinâmica de matrizes
2
Vetores e alocação dinâmica
A forma mais simples de estruturarmos um conjunto de dados é por meio de vetores
Definimos um vetor em C da seguinte forma: int v[10];
Esta declaração diz que v é um vetor de inteiros dimensionado com 10 elementos, isto é, reservamos um espaço de memória contínuo para armazenar 10 valores inteiros. Assim, se cada int ocupa 4 bytes, a declaração reserva um espaço de memória de 40 bytes
3
Vetores e alocação dinâmica
Em C, a indexação de um vetor varia de zero a n-1, onde n representa a dimensão do vetor.
v[0] acessa o primeiro elemento de v
v[1] acessa o segundo elemento de v ...
Mas v[10] invade a memória
144
104
O acesso a cada elemento do vetor é feito através de uma indexação da variável v .
v
4
Vetores e alocação dinâmica float v[10]; int i;
/* leitura dos valores */ for (i = 0; i < 10; i++) scanf("%f", &v[i] );
Observe que passamos para scanf o endereço de cada elemento do vetor ( &v[i] ), pois desejamos que os valores capturados sejam armazenados nos elementos do vetor.
Se v[i] representa o (i+1)-ésimo elemento do vetor, &v[i] representa o endereço de memória onde esse elemento está armazenado Existe uma associação entre vetores e ponteiros, pois a variável v , que representa o vetor, é uma constante que armazena o endereço inicial do vetor, isto é, v , sem indexação, aponta para o primeiro elemento do vetor.
5
Vetores e alocação dinâmica num vetor temos as seguintes equivalências: v + 0 aponta para