battlecry [Moderador]
Número de Mensagens : 87 Idade : 35 Data de inscrição : 26/02/2008
| Assunto: Uma observação importante sobre alocação dinâmica Qua 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; }
| |
|