Malloc und Free C Programmierung

Neue Frage »

Auf diesen Beitrag antworten »
LULUFEE Malloc und Free C Programmierung

Meine Frage:
Hallo,
ich muss zur Übung diese 3 Beispiele auf Ihre Fehler überprüfen. Leider bin ich glaub ich echt sehr blind, was das betrifftAugenzwinkern (Anfang 1.Semster). Habe eigentlich gedacht, das wäre total easy, aber irgendwie ist der Groschen doch nicht gefallen. Daher diese Übung.

a)
1 c h a r * ausgabe = " S p e i c h e r v e rwa l t u n g \ n " ;
2 c h a r * z i f f e r n = ma l l o c ( s i z e o f ( c h a r ) * 1 0 ) ;
3 f o r ( i n t i =0 ; i <11; i ++){
4 *( z i f f e r n + i ) = ' 0 ' + i ;
5 }
6 f r e e ( ausgabe ) ;
7 f r e e ( z i f f e r n ) ;

b)
1 i n t * i ;
2 f o r ( i n t k=0 ; k <10; k++) {
3 i = ma l l o c ( s i z e o f (2* i n t ) ) ;
4 i f ( i == NULL) { / * a u s g e l a s s e n : Fehl e rme ldung , Programm beenden * / }
5 i n t * j ;
6 j = i ;
7 i ++ ;
8 * i = k ;
9 f r e e ( i ) ;
10 }

c)
1 i n t ** ma t r i x ;
2 ma t r i x = ma l l o c (3* s i z e o f ( c h a r ) ) ;
3 i f ( ma t r i x != NULL) {
4 f o r ( i n t i =0 ; i <3; i ++){
5 ma t r i x [ i ] = ma l l o c (3* s i z e o f ( i n t ) ) ;
6 }
7 / * a u s g e l a s s e n : Uebe rprufung und e twa s mi t d e r Ma t r ix t u n * /
8 }
9 f r e e ( ma t r i x ) ;



Meine Ideen:
Meine korrigierten Lösungsvorschläge:
a)
1. char *ausgabe;
2.char *Ziffern
3. char= "Speicherverwaltung\ n " ;
4. Ziffern= malloc (sizeof(char)*10;

b)
 
Auf diesen Beitrag antworten »
eulerscheZahl

Ich habe meine Antworten nicht getestet, da ich keine Lust habe, die vielen Leerzeichen zu löschen.

a)
free(ausgabe); ist falsch, da free nur für dynamisch allocierten Speicher (malloc, calloc, realloc) zuständig ist.
Ansonsten habe ich nichts auszusetzen.
char= "Speicherverwaltung\ n " ; ist Unsinn, du kannst du einen Datentyp keinen Inhalt zuweisen, sondern nur einer Variablen.

b)
2*sizeof(int) statt sizeof(2*int)
da i erhöht wird, wird der Speicher mit free nicht komplett freigegeben. Stattdessen wird Speicher freigegeben, der gar nicht reserviert wurde.

c)
matrix = malloc(3 * sizeof(int*));
es sollen ja Zeiger auf int verwendet werden.
Auf diesen Beitrag antworten »
ed209

Ich bin ja fast der Ansicht, daß jemand der Informtik studiert oder in der Schule durchnimmt in der Lage sein sollte einen Text korrekt einzutippen.

Ich bin echt Neugierig wie da all die Leerzeichen reingekommen sind.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »