tjt Posted January 16, 2012 Report Posted January 16, 2012 Salut. Am urmatorul cod :#include<iostream>#include<malloc.h>using namespace std;int **dinamic_memory_matrix(int &);void free_memory_matrix(int **,int &);void read_matrix(int **,int & );void show_matrix(int **,int & );int main (){ int n,**matrix; cout<<"n= "; cin>>n; matrix=dinamic_memory_matrix(n); read_matrix(matrix,n); show_matrix(matrix,n); free_memory_matrix(matrix,n); show_matrix(matrix,n);}int **dinamic_memory_matrix(int &n){ int **a; a=new int *[n]; for(int i=0;i<n;i++) a[i]=new int [n]; return a;}void free_memory_matrix(int **a,int &n){ for(int i=0;i<n;i++) delete a[i]; delete a;}void read_matrix(int **a,int &n){ for(int i=0;i<n;i++) for(int j=0;j<n;j++) { cout<<"element["<<i<<"]["<<j<<"]= "; cin>>*(*(a+i)+j); }}void show_matrix(int **a,int &n){ for(int i=0;i<n;i++) { for(int j=0;j<n;j++) cout<<*(*(a+i)+j)<<" "; cout<<'\n'; }}In momentul cand il rulez (ex : n=3 si elementele matricei 1...9) la primul show_matrix (matrix,n); imi da ca rezultate1 2 3 4 5 67 8 9Iar la al doilea imi da ca rezultat : pe prima linie-> 3 numere foarte maripe a doua linie -> 3 numere foarte mari pe a treia linie-> 7 8 9Vreau sa stiu de ce raman in memorie 7 8 9 dupa ce am folosit functia free_memory_matrix (matrix,n); ? Aceeasi problema este si pentru n=4,5,etc... dupa primele 2 linii imi apar numerele stocate initial de mine .Precizez ca sunt la inceput cu studiul privind alocarea dinamica a memoriei in C++. Quote
em Posted January 16, 2012 Report Posted January 16, 2012 Tu nu ai nicio garan?ie despre ce va fi acolo o dat? ce ai dezalocat zona. Pur ?i simplu nu te intereseaz?... Quote
tjt Posted January 16, 2012 Author Report Posted January 16, 2012 (edited) Tu nu ai nicio garan?ie despre ce va fi acolo o dat? ce ai dezalocat zona. Pur ?i simplu nu te intereseaz?...Am inteles.Mersi de ajutor.Eu credeam ca ramane ceva dupa ce elibereaza zona si ca e ceva gresit in cod.Se poate inchide. Edited January 16, 2012 by tjt Quote