Hallo C Programierer,
Ich habe da mal ein paar verständiniss Fragen zu malloc calloc realloc.
Also folgendes:
malloc: gibt einen void Zeiger auf den Anfangsbereich des allozierten Speichers zurück der Speicher wird auf dem Heap alloziert und ist bei allozierung ohne Wert also nicht initaliesiert
calloc: funktioniert wie malloc nur kann man bei calloc angeben wie viel Speicher für wie viel Element freigegeben werden soll außerdem wird jeder Speicherbereich mit 0 initialsiert
realloc: gibt vorher mit malloc oder calloc erstellten speicher wieder frei und erweitert diesen.
ist das soweit richtig ?
Als nächstes bin ich mir nicht sicher ob ich bisher malloc richtig genutzt habe. Also angenommen ich möchte ein Dynamisches Array erstellen so habe ich das immer so getan:
hat bisher auch so funktioniert zumindest hatt mein Programm getan was es sollte und auch der Compiler hatte nichts einzuwenden.
Aber lege ich so nicht nur speicher für einen int Wert an ?
Also müsste man das so machen :
Alles anzeigen
Was von beiden ist denn nun richtig? Wenn oberes Falsch ist wäre es interessant zu wissen wieso es die ganze Zeit funktioniert hat ??
oder ist es das selbe???
PS: new und delete ist in C++ das selbe wie malloc in c richtig ?
Ich habe da mal ein paar verständiniss Fragen zu malloc calloc realloc.
Also folgendes:
malloc: gibt einen void Zeiger auf den Anfangsbereich des allozierten Speichers zurück der Speicher wird auf dem Heap alloziert und ist bei allozierung ohne Wert also nicht initaliesiert
calloc: funktioniert wie malloc nur kann man bei calloc angeben wie viel Speicher für wie viel Element freigegeben werden soll außerdem wird jeder Speicherbereich mit 0 initialsiert
realloc: gibt vorher mit malloc oder calloc erstellten speicher wieder frei und erweitert diesen.
ist das soweit richtig ?
Als nächstes bin ich mir nicht sicher ob ich bisher malloc richtig genutzt habe. Also angenommen ich möchte ein Dynamisches Array erstellen so habe ich das immer so getan:
hat bisher auch so funktioniert zumindest hatt mein Programm getan was es sollte und auch der Compiler hatte nichts einzuwenden.
Aber lege ich so nicht nur speicher für einen int Wert an ?
Also müsste man das so machen :
Quellcode
Was von beiden ist denn nun richtig? Wenn oberes Falsch ist wäre es interessant zu wissen wieso es die ganze Zeit funktioniert hat ??
oder ist es das selbe???
PS: new und delete ist in C++ das selbe wie malloc in c richtig ?