A Alocação de Memória
Por: leobruts • 2/10/2015 • Trabalho acadêmico • 3.532 Palavras (15 Páginas) • 724 Visualizações
- Estrutura de Dados
- Conceitos
1.1.1 Alocação de Memória
Alocação de Memória, é quando um bloco de memória foi alocado, mas os dados não faram requisitados por um determinado números de ciclos ou não há nenhum tipo de referencia a este bloco pelo programa, esse bloco é liberado e pode ser reutilizado para outra requisição e constantemente são desenvolvidas técnicas para que a cada dia seja eficiente em uma forma simplificada na alocação e reciclagem, muitas 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 a alocação dinâmica de memória. A alocação dinâmica é administrada pelas funções malloc e free que estão na biblioteca stdlib. Para usar está biblioteca, deve se incluir o correspondente arquivo-interface no programa por meio #include
A função malloc (o nome é uma abreviatura de mellory allocation) aloca um bloco de bytesconsecutivos na memória do computador e desenvolve o endereço desse bloco. O número de bytes é especificado no argumento da função no seguinte fragmento de código, malloc aloca 1byte: este endereço e do tipo genérico void*. O programador armazena esse endereço num ponteiro de tipo apropriado.
Exemplo com a função malloc:
#include
#include
#include
#include
Void main(void)
Int QuantElem, i;
Int *vet;
Printf(“Digite a quantidade de valores que deseja inserir no vetor:”);
Scanf(“%d”,&QuantElem);
If ((vet = (int*) mallocQuantElem)) == NULL)
{
printf(“Memória insuficiente”);
exit(1);
printf(“\nDigite os valores a serem inseridos no vetor vet:\n”);
for(i=0;i
prin f(Digiteo valor de vet{%d]:”,i);
scanf(“%d” , &vet[i]);
}
prinff(“\nImprimindo os valores do vetor vet:\n”);]:%d\n”);
For prinf(“vet[%d]:d\n”,i,vet[i]);
free(vet);
getch();
}
1.1.2 Ponteiros em C
Ponteiros são variáveis que armazenam o endereço de memória de outras variáveis um ponteiro aponta para uma variável, quando tem o endereço dela. Podem apontar apara qualquer tipo de variável.
São úteis pois existem variáveis que estão em diferentes partes de um programa. Assim, podem haver vários ponteiros espalhados por diversas partes do programa;
Exemplo:
int *p; /* p é um ponteiro para um inteiro */
int *q;
p = &a; /* o valor de p é o endereço de a */
q = &b; /* q aponta para b */
c = *p + *q;
1.1.3 Estruturas de Dados e C
Nos dias atuais, procuram-se programa que sejam rápidos e eficientes. O segredo para isso está na maneira com os dados do sistema são organizados, sendo identificado isso como Estrutura de Dados que é gerado pelo programa. A maneira como se organiza esses dados não é óbvia e simples. A estrutura de dados de um programa é algo fundamental para a estrutura de um programa.
1.1.4 Vetores em C
Vetor é uma estrutura de dados indexada, são chamados de arranjo ou matrizes sendo que armazena uma determinada quantidade de vetores do mesmo tipo. Os dados alocados em um vetor são chamados de itens do vetor. Para a localização de um item em um vetor, utilizamos um número inteiro denominado índice do vetor. Sendo assim posso mexer em um conjunto de dados do mesmo tipo utilizando apenas uma variável.
Semelhantemente a declaração de variáveis normais são parecidas com a declaração de um vetor. A diferença está que depois do nome da variável deve ser informada a quantidade de elementos do vetor
Exemplo:
int main(void)
{
int vetor[5];
int x, i;
printf ("digite 5 numeros\n");
for (i = 0; i < 5; i++) /*Este laco faz o scan de cada elemento do vetor*/
{
scanf("%d", &vetor[i] );
}
i = 1;
x = vetor[0];
while (i < 5) /*Este laco compara cada elemento do vetor*/
{
if (vetor[i] > x)
{
x = vetor[i];
}
i++;
}
printf("\n O maior numero que voce digitou foi %d .\n",x);
getch ();
return 0;
}
1.1.5. Implementando Vetores Unidimensionais
Vetores, também conhecidos como arrays, são variáveis que servem para guardar vários valores do mesmo tipo de forma uniforme na memória. Por exemplo, se tivemos que criar 20 variáveis do mesmo tipo que querem dizer a mesma coisa, nós não criaríamos -> int x1, x2, x3, x4, x5, ... ao invés disso, criaríamos apenas uma variável de vetor para guardar todos os 20 números de uma vez. Exato, simples desse jeito.
Como um vetor pode guardar vários valores temos que definir quantos valores ele deve guardar para que seja reservado o espaço necessário em memória. Então, definimos a declaração de um vetor da seguinte maneira:
Primeiro o tipo de dado: int, float, double, ...
Segundo o nome da variável: usando as mesmas convenções de uma variável comum. (array, vetor, variavelDeNumeros, ...)
E por fim, o tamanho necessário do vetor escrito entre colchetes: [5], [10], [3]...
#include
#include
using namespace std;
int main (void){
int i, vetor [5];
for (i=0; i<=4; i++){
cout <<"Digite o "<
cin >> vetor[i];
cin.ignore();
system ("cls");
}
for (i=0; i<=4; i++){
cout<<"Posicao "<
...