- Entrou
- Set 23, 2006
- Mensagens
- 1,690
- Gostos Recebidos
- 0
Quando falei dos arrays disse que só poderiam ser inicializados (em termos de tamanho) de uma forma constante, que não podesse ser alterada ao longo do programa. A isto chama-se reservar memória estáctica. Pode-se reservar memória em run time, basta para isso usarmos o operador new. O seguinte exemplo mostra como criar um inteiro dinamicamente.
O seguinte exemplo mostra como criar arrays dinamicamente:
Sempre que um programador aloja memória dinamicamente num programa fica com a responsabilidade de a libertar quando já não precisar mais dela. Para isso usa o operador delete.#include <iostream>
using namespace std;
// demonstração do uso de memória dinamica
int main()
{
int *i = new int; // alojar
*i = 10; // afectar
cout<< *i << endl;
delete i; // desalojar
cin.get();
return 0;
}
O seguinte exemplo mostra como criar arrays dinamicamente:
Quando se faz int *a = new int[ n ]; o que o programa faz é criar um array de n posições e afectar o apontador a para a casa do primeiro índice. Como se trata de um array, teriamos de fazer delete a todos os seus índices, mas se utilizarmos delete [] a; isso é feito automaticamente.#include <iostream>
using namespace std;
// programa troca a ordem de insersão de quantos números o utilizador quiser
int main()
{
int tam, i;
cout<<"Pretende introduzir quantos numeros?"<<endl;
cin >> tam;
// reservar espaço
int *a = new int[tam];
cout<<"Introduza os numeros..."<<endl;
// ler
for(i=0; i<tam; ++i)
cin>>a[ i ];
// escrever ao contrario
for(i=tam-1; i>=0; --i)
cout<<a[ i ]<<" ";
// libertar a memória alojada dinamicamente
delete [ ] a;
cin.get();
return 0;
}