Engenharia da Computação
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Engenharia da Computação

Fórum de toda Engenharia da Computação da UNIG
 
InícioPortalProcurarÚltimas imagensRegistarEntrar

 

 Uma observação importante sobre alocação dinâmica

Ir para baixo 
AutorMensagem
battlecry
[Moderador]
battlecry


Número de Mensagens : 87
Idade : 35
Data de inscrição : 26/02/2008

Uma observação importante sobre alocação dinâmica Empty
MensagemAssunto: Uma observação importante sobre alocação dinâmica   Uma observação importante sobre alocação dinâmica Icon_minitimeQua 16 Abr 2008, 1:24 pm

Boa tarde galera ! Quando você cria um programa e aloca memória suficiente para uma certa variável, é elegante e quase que obrigatório desalocar essa memória após o seu uso. Mas a questão é : qual é o momento exato para fazer essa desalocação ? a resposta é muito simples: quando o programador não fizer mais uso da variável ; por exemplo, digamos que um programador criou um código e alocou uma quantidade de memória exata para um certo vetor - enquanto ele estiver manipulando este vetor ele não deverá liberar a memória - no entanto, digamos que ele imprima todo o conteúdo do vetor na tela. O programador não precisará mais usar o vetor pois já alcançou sua finalidade : imprimir o conteúdo do vetor na tela, logo, ele pode simplesmente desalocar memória retornando-a à memória principal. Colocarei um programa que retrate essa idéia :



Código:


#include <iostream>
#include <iomanip>
using namespace std;

float media(float *lista, int tamanho);
int main()
{
    int tamanho;
   
    cout << "Qual e o numero de notas? ";
    cin >> tamanho;
   
    float *notas;
    notas = new float[tamanho];  // com new , aloquei memória para um float com o tamanho exposto pelo usuário
   
    int i;
   
    cout << setprecision(4);
   
    for(i=0; i < tamanho; i++)
    {
          cout << "Digite a nota do aluno " << (i + 1) << " : " ;
          cin >> *(notas+i);
    }
   
    float m = media(notas, tamanho );
    cout << "Media das notas: " << m << endl;
    delete [] notas;                                                /* prestem atenção nesta linha ; após imprimir a média eu  desaloquei a memória reservada ao vetor notas, pois não tinha mais nada a fazer em relação a esse vetor */
    system("Pause");
    return 0;
}

 float media(float *lista, int tamanho)
 {
      float m = 0.0;
      for(int i=0; i < tamanho; i++) m += *(lista++);
      return m/tamanho;
 }


Ir para o topo Ir para baixo
 
Uma observação importante sobre alocação dinâmica
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» A verdade nua e crua sobre a linguagem C

Permissões neste sub-fórumNão podes responder a tópicos
Engenharia da Computação :: Extra-Classe :: Programação e Códigos :: C, C++-
Ir para: