Malloc und Free C Programmierung |
LULUFEE
Grünschnabel
Dabei seit: 17.05.2015
Beiträge: 1
|
|
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 betrifft
(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)
|
|
17.05.2015 13:13 |
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
17.05.2015 17:52 |
|
|
|