002
13.11.2003, 20:38 Uhr
Pablo
Supertux (Operator)
|
Ich habe folgendes gemacht, bei mir passiert nichts falsches:
C++: |
#include <stdio.h> #include <malloc.h> int main() { int **Array, x=5, y=6,i,j,counter=0; Array = (int**) malloc(x*sizeof(int*)); // -büberprüfen, ob Array == NULL-A if(Array == NULL) { fprintf(stderr, "Kein Speicher\n"); return 1; } for(i=0; i<y;++i) { Array[i] = (int*) malloc(y*sizeof(int)); if (Array[i] == NULL) { fprintf(stderr, "Kein Speicher\n"); for(j=0; j<i; ++j) free(Array[j]); free(Array); return 1; } for(j=0; j<y;++j) Array[i][j] = counter++; }
for(i=0; i<x; ++i) { for(j=0;j<y; ++j) printf(" %d ", Array[i][j]); printf("\n"); }
for(i=0; i<y-1; ++i) // hä free(Array[i]); // wieso kann ich das nicht? free(Array);
return 0; }
|
Was ich nicht verstehen kann, wieso kann ich free(Array[ i ]); nicht ausführen. Ich kriege immer Segmentation Fault, keine Ahnung wieso. Ich habe ein Programm geschrieben, dass ein char** deklaiert hat und ich konnte schon free(file[ i ]); ausführen, aber als int** kann ich nicht, das verstehe ich nicht wieso. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! |