Este programa muito simples pretende demonstrar como é possível fazer uma utilização da memória do computador de forma estática ou dinâmica.
Seguem-se quatro exemplos de versões de um programa que apenas lê dois números inteiros e calcula sua soma.
No primeiro exemplo, as variáveis a e b são criadas de forma estática(stack), e nos três exemplos seguintes a sua gestão é feita de forma dinâmica (heap).
Exemplo 1
#include <iostream> using namespace std; int main(){ int a, b; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "a + b = " << a + b << endl; }
Gestão estática da memória.
Exemplo 2
#include <iostream> using namespace std; int main(){ int *a, *b; a = new int; b = new int; cout << "a = "; cin >> *a; cout << "b = "; cin >> *b; cout << "a + b = " << *a + *b << endl; }
Gestão dinâmica da memória.
Exemplo 3
#include <iostream> using namespace std; int main(){ int *a = new int; int *b = new int; cout << "a = "; cin >> *a; cout << "b = "; cin >> *b; cout << "a + b = " << *a + *b << endl; }
A declaração do apontador e a alocação da memória podem ser feitas na mesma linha.
Exemplo 4
#include <iostream> using namespace std; int main(){ int *a = new int; int *b = new int; cout << "a = "; cin >> *a; cout << "b = "; cin >> *b; cout << "a + b = " << *a + *b << endl; delete a; delete b; }
É boa prática libertar a memória que já não é utilizada, embora isto acabe por acontecer quanto o programa termina.
Exemplo 5
#include <iostream> using namespace std; int main(){ int *a = new int(2); int *b = new int(3); //cout << "a = "; //cin >> *a; //cout << "b = "; //cin >> *b; cout << "a + b = " << *a + *b << endl; delete a; delete b; }
E já agora, os objectos criados podem receber um valor inicial.
muito bom viu!!!!valeu aí.
obrigada! me ajudou a entender a prova que tive de LOP.