000
28.08.2003, 16:33 Uhr
Pablo
Supertux (Operator)
|
Wieso funktioniert es nur 13 Mal?
C++: |
#include <stdio.h> #include <malloc.h>
int main() { int i; char** m; m = malloc(1); m[0] = (char*)malloc(225); for(i=0; i<20; ++i) { realloc(m,i+1); m[i] = (char*) malloc(255); sprintf(m[i], "zeile %d", i+1); printf("%s\n",m[i]); } }
|
Wieso bekomme ich das?
zeile 1 zeile 2 zeile 3 zeile 4 zeile 5 zeile 6 zeile 7 zeile 8 zeile 9 zeile 10 zeile 11 zeile 12 Speicherzugriffsfehler ??? wieso
Bearbeitung: |
Das ist nur ein Bsp. Mir ist das Problem in einem anderen Programm, das ich grad schreibe. Da ist mir eingefallen, dass wenn i == 13, d.h wenn m[ i ] = (char*)malloc..... tritt der Fehler auf. Wenn man die Zeilen ab m[ i ] == (char*)malloc.... löscht, dann gibt es den Fehler nicht. D.h. an realloc liegt es nicht, sondern an malloc. In meinem Programm bricht auch nach 13 Mal ab, in diesem Beispiel auch. Wieso?
|
-- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 28.08.2003 um 16:55 Uhr von Pablo Yanez Trujillo editiert. |