free problem
-
hallo ich habe ein kleines Problem:
wenn ich einen pointer auf einen pointer array habe, kann ich das Ding nicht mehr freen ohne dass das Programm abstürzt und einen Verweis auf NTDLL macht.
Hier der Code
int z = 12; int y = 256; int x = 256; double*** image = (double ***) malloc(z*sizeof(double)); for(int i = 0; i<z; i++) { image[i] = (double **) malloc(y*sizeof(double)); //etc. etc. } //hier kommt dann die ganze Routine //am schluss möcht ich dann freen: //ich wollte dann erst einmal durch alle indices durchgehen aber das hat auch nicht geklappt //darum direkter Zugriff: free(image[0][0]); --> Kackt ab! free(image); --> funktioniert aber released den Speicher nicht!
Kann jemand helfen!
Gruss
chris.
[ Dieser Beitrag wurde am 30.05.2003 um 15:41 Uhr von cpb editiert. ]
-
#include <stdlib.h> int main(void) { const size_t n0=2; double ***ptr=malloc(n0*sizeof(double**)); for(size_t i=0;i<n0;++i) { const size_t n1=2; ptr[i]=malloc(n1*sizeof(double*)); } //... for(size_t i=0;i<n0;++i) free(ptr[i]); free(ptr); }
[edit]@Shade ups, ich editier es mal[/edit]
[ Dieser Beitrag wurde am 31.05.2003 um 12:06 Uhr von kingruedi editiert. ]
-
kingruedi:
ueberall ein sternchen zuviel.Merksatz:
pointer_type p=malloc( size * sizeof(*p) );
wenn pointer_type ein double*** dann muss es
double*** p=malloc( size * sizeof(p) );
heissen und *p bei p vom type double*** ist
double*