Puh-Bert
22-03-2002, 23:40
Hi
Ich hab da ein kleines C-Problem. Der Code sieht wie folgt aus:
int max = 60;
int *daten;
if ( ( daten = (int *) malloc ( max * sizeof(int) )) == NULL)
exit (1);
for ( ; max > 0 ; max-- )
*(daten +(max*sizeof(int)) ) = max;
Dieser Teil des Codes soll den allozierten Speicher auf den 'daten' zeigt
mit den Werten 1 bis 60 (bzw. bis zu dem Wert von max) füllen. Bei Werten von 'max' bis 70 klappt das auch.
Bei grösseren Werten kriege ich einen SIGSEGV.
Hab ich da jetzt nen Denkfehler drin? Was ich nicht ganz raffe ist warum
es bei kleinen Werten für 'max' hinhaut und bei grösseren nicht?! Selbst bei
einem Wert von 100 reserviert malloc doch gerade mal 400Bytes - sollte doch nicht zuviel sein (hab genug RAM ;-))
Puh-Bert
Ich hab da ein kleines C-Problem. Der Code sieht wie folgt aus:
int max = 60;
int *daten;
if ( ( daten = (int *) malloc ( max * sizeof(int) )) == NULL)
exit (1);
for ( ; max > 0 ; max-- )
*(daten +(max*sizeof(int)) ) = max;
Dieser Teil des Codes soll den allozierten Speicher auf den 'daten' zeigt
mit den Werten 1 bis 60 (bzw. bis zu dem Wert von max) füllen. Bei Werten von 'max' bis 70 klappt das auch.
Bei grösseren Werten kriege ich einen SIGSEGV.
Hab ich da jetzt nen Denkfehler drin? Was ich nicht ganz raffe ist warum
es bei kleinen Werten für 'max' hinhaut und bei grösseren nicht?! Selbst bei
einem Wert von 100 reserviert malloc doch gerade mal 400Bytes - sollte doch nicht zuviel sein (hab genug RAM ;-))
Puh-Bert