Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Technische Informatik » Malloc und Free C Programmierung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 3 Beiträge
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.
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.
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)