Jump to content
tjt

C++ Dynamic Memory allocation

Recommended Posts

Posted

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 rezultate

1 2 3

4 5 6

7 8 9

Iar la al doilea imi da ca rezultat :

pe prima linie-> 3 numere foarte mari

pe a doua linie -> 3 numere foarte mari

pe a treia linie-> 7 8 9

Vreau 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++.

Posted (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 by tjt

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...