Matrix

Gast #326146
Lesenswert?
• ▲
▼
Es gibt beides und oftmals wird auch der gleiche Code dafür generiert.

malloc nimmt man nur dann, wenn die Größe noch unbekannt ist, sonst
kostet es nur unnötig Zeit und Code.


Peter
Gast #326147
Lesenswert?
• ▲
▼
habe gedacht, man nimmt malloc wenn die grösse bekannt ist!! die muß ich
ja eingeben!!
reicht dann: Array=malloc(..)? oder muß ich auch:
for(i=0;i<x;i++){
*Array=malloc(..);}???
mit free? muss ich für jeden Zeiger speicher frei machen oder reicht
free(Array)????
Gruß
Gast #326149
Lesenswert?
• ▲
▼
Natuerlich muss dir Groesse bekannt sein. Was Peter meinte, ist dass
malloc dann benutzt wird, wenn die Groesse erst zur Laufzeit errechnet
wird und nicht schon beim kompilieren bekannt ist.
Wenn du ein mehrdimensionales array von pointern auf integers anlegen
willst und die Groessen nicht bekannt sind musst du in einer Schleife
die arrays mit malloc anlegen und spaeter einzeln per free freigeben.
Gast #326152
Lesenswert?
• ▲
▼
Apropos Array vs. malloc: Ich persönlich ziehe es vor, in Controllern
der hier üblichen Grössenordnung ausschliesslich statische Allokation
vorzunehmen, also per Array. Das hat den Charme, dass bei der
RAM-Belegung als einzige variable Grösse der Stack verbleibt. Die RAM
Grösse wiederum wird im Build angezeigt, man sieht sofort, wie weit das
RAM ausgelastet ist. Mit malloc sieht man das nicht.

Wird jedoch malloc verwendet, merkt man erst zur Laufzeit, ob es reicht
oder nicht. Bzw. man merkt es u.U. garnicht und das Programm  hängt,
startet neu, überschreibt Daten mit dem Stack oder macht sonstwelchen
Blödsinn.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.