Chcialabym stworzyc funkcje, ktora bedzie alokowala dynamicznie pamiec i funkcje zwalniajaca pamiec:
Napisalam nastepujacy kod:
plik array.cpp:
Kod:
#include "array.h"
#include<iostream>
using namespace std;
double **new_array(double **A, int m, int n)
{
A=new double *[m];
for (int i=0;i<m;i++) A[i]=new double[n];
return A;
}
void del_array(double **A, int m)
{
for(int i=0;i<m;i++) delete [] A[i];
delete []A;
}
Plik array.h ma postac:
Kod:
#ifndef alloc_h_
#define alloc_h_
double **new_array(double **A, int m, int n);
void del_array(double **A, int m);
#endif
i w pliku main.cpp wywoluje powyzsze funkcje:
Kod:
#include "array.h"
#include<iostream>
using namespace std;
int main()
{
double **T;
int m=3;
int n=3;
new_array(T,m,n);
del_array(T, m);
}
Program sie kompiluje, ale po uruchomieniu otrzymuje: Segmentation fault
Sprawdzilam debbugerem, gdzie sie sypie i otrzymalam:
#0 0xb7dd2eee in free () from /lib/i386-linux-gnu/libc.so.6
#1 0xb7f8c80f in operator delete(void*) () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#2 0xb7f8c86b in operator delete[](void*) () from /usr/lib/i386-linux-gnu/libstdc++.so.6
#3 0x080485cb in del_array (A=0xb7edaff4, m=3) at array.cpp:15
#4 0x08048695 in main () at main.cpp:14
Jednakze nie wiem dokladnie dlaczego sypie sie funkcja del_array
Bede niezmiernie wdzieczna za wskazanie mojego bledu/bledow.
Pozdr!