40 likes | 212 Views
Curso de Programação em C++. Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor: Renato Peixoto Abril/2007. Alocação dinâmica. Operadores: new: reserva o espaço de memória necessário delete: libera a memória alocada.
E N D
Curso de Programação em C++ Universidade Federal do Ceará Departamento de Engenharia Estrutural e Construção Civil Prof: Evandro Parente Junior Monitor: Renato Peixoto Abril/2007
Alocação dinâmica • Operadores: • new: reserva o espaço de memória necessário • delete: libera a memória alocada. • Exemplo: • Toda memória alocada deve ser liberada: • Cuidado com alocação dentro de laços e de funções. • Evitar memory leaks (memória perdida). • Ao final da execução a memória alocada pelo programa é liberada pelo sistema. int n; cin >> n; double *x = new double[n]; // Aloca um vetor com n posições for (int i = 0; i < n; i++) x[i] = 0.0; // Inicializa o vetor alocado delete []x; // Libera a memoria alocada
Alocação dinâmica • Matrizes: • São tratadas como um vetor de ponteiros para vetores. • As linhas correspondem a um vetor de ponteiros que apontam para o primeiro elemento de cada coluna. • Cada coluna é um vetor independente. • Exemplo: int n,m; cin >> n >> m; double **A = new double*[n]; // Aloca as n linhas da matriz A for (int i = 0; i < n; i++) A[i] = new double[m]; // Aloca as m colunas de cada linha … for (int i = 0; i < n; i++) delete []A[i]; // Libera as m colunas de cada linha delete []A; // Libera as n linhas da matriz A