“Calcular a soma de dois inteiros” – C++ – Gestão estática/dinâmica da memória

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.

Anúncios

One thought on ““Calcular a soma de dois inteiros” – C++ – Gestão estática/dinâmica da memória

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s