Dynamisch Speicher reservieren (Array)

Gast #4490989
Lesenswert?
• ▲
▼
Hallo,

ich möchte mir dynamisch Speicher für ein Array reservieren:

uint16_t *tempArray;
tempArray = malloc(numberOfElements * sizeof(uint16_t));

Dazu folgende Frage: muss ich, wie ich es oben gemacht habe, die 
gewünschte Anzahl der Elemente = Größe des Arrays ("numberOfElements") 
noch mit der größe des Speicherbedarfs multiplizieren 
("sizeof(uint16_t)") oder reicht es, mit malloc die Anzahl der Elemente 
zu reservieren? Sprich alloziiert malloc "automatisch" (dadurch das 
tempArray bereits uint16_t ist) die korrekte Größe von 10 Byte und würde 
in meinem Fall 20Byte reservieren?
Persönliche Seite #4491004
Lesenswert?
• ▲
▼
bd schrieb:
> Sprich alloziiert malloc "automatisch" (dadurch das tempArray bereits
> uint16_t ist) die korrekte Größe von 10 Byte und würde in meinem Fall
> 20Byte reservieren?

Woher sollte es das wissen?

Verwende calloc. Das erhält zwei separate Argumente, die Größe eines 
Elements und die Anzahl der Elemente. Obendrein initialisiert es den 
angeforderten Speicher mit 0, worum man sich bei malloc selbst kümmern 
muss.
Gast #4491026
Lesenswert?
• ▲
▼
bd schrieb:
> Ich danke Euch.
>
> War mir halt nicht sicher, aber jetzt klingts auch logisch für mich. Und
> danke für den Tip mit calloc. Ich werde das dann verwenden.

Da du hier bei im µC Sektor bist, "könnte" das insgesamt eine dumme Idee 
sein.
Je nach dem... "könnte" ist "könnte" und nicht "muss"

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.