Escolar Documentos
Profissional Documentos
Cultura Documentos
C++ substitui as funes C de alocao e de desalocao de memria , malloc e free, pelas novas
funes new e delete, respectivamente e torna esse processo muito mais fcil para o programador. O
cdigo seguinte exemplifica o modo mais simples de uso de new e delete. Um pointer para um
inteiro aponta para um bloco de memria criado por new:
int *p;
p = new int;
*p = 12;
cout << *p;
delete p;
ainda possvel alocar blocos compostos de matrizes de tamanhos variados, usando uma tcnica
similar. Repare o uso de [] para excluir a matriz:
int *p;
p = new int[100];
p[10] = 12;
cout << p[10];
delete [] p;
a;
pi;
[] array;
[ ] string;
OBS: Sempre desalocar o espao de memria alocado para uma varivel, quando ela no for
mais utilizada usando new <-> delete.
EXEMPLO ERRADO:
int n;
cout << "n = ";
cin >> n;
int v[n]; // Isto nao esta correto,
Exemplo testado1:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
int *ve, i, n=10;
// Solicita ao usuario a quantidade de elementos do vetor
cout << "Quantidade de elementos: ";
cin >> n;
// Aloca memoria para o vetor (n * 2 bytes)
ve = new int[n];
if (ve == NULL) {
cout << "Falta memoria para a alocagao do vetor" << endl;
exit(1);
}
// Insere os valorcs acs clcmentos do vetor
for (i=0; i<n; i++) {
cout << "Elemento " << i << " = ";
cin >> ve[i];
}
// Exibe elementos do vetor
for (i=0; i<n; i++)
cout << "Elemento " << i << " = "<< ve[i] << endl;
// Libera a memoria alocada
delete []ve;
ve = NULL;
system("PAUSE");
return EXIT_SUCCESS;
}
Exemplo testado2:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
float **matriz;
int nrow=10, ncol=10, i;
/* Aloca a matriz */
/* Aloca vetor de ponteiros */
matriz = new float* [nrow];
if(!matriz){
cout << " Memria insuficiente!" << endl;
exit(0);
} else{
/* Aloca as linhas */
for(i=0 ; i <nrow; i++){
matriz[i]= new float[ncol];
if(!matriz[i]){
cout << " Memria insuficiente!" << endl;
exit(0);
}
}
}
//SEU CODIGO
//SEU CODIGO
matriz[2][3]= 4.6;
matriz[3][3]= 1.4;
cout << matriz[2][3] + matriz[3][3] << endl;
/* Desaloca as linhas */
for (i=0; i < nrow ; i++) delete [] matriz[i];
/* Desaloca o vetor de ponteiros */
delete [] matriz;
system("PAUSE");
return EXIT_SUCCESS;
}
Exemplo Testado 3:
#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;
void teste (double ** &matriz);
int main(){
int n= 20;
double **matriz;
matriz = new double* [n];
for (int i=0; i<n; i++)
matriz[i] = new double [n];
//SEU CODIGO
teste(matriz);
cout << matriz[2][2] <<
for (int i=0; i<n; i++)
delete matriz[i];
delete matriz;
system("PAUSE");
return EXIT_SUCCESS;
}
endl;
Programa testado 4:
#include <iostream>
#include <string>
using namespace std;
int main(){
string nome;
string sobrenome;
cout<<"Digite seu nome: ";
getline(cin, nome);
cout<<"Digite seu sobrenome: ";
getline(cin, sobrenome);
cout <<"Seu nome "<<nome<<" e seu sobrenome "<<sobrenome<<"."<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Exemplo testado5:
#include
#include
#include
#include
<cstdlib>
<iostream>
<fstream>
<string>