Woher kommt der Speicher aus malloc?



  • Hallo Forum!
    Wenn ich Speicher reserviere mit malloc, ist dieser dann immer leer, also sind die Speicherzellen immer mit Nullen gefüllt?
    Ich habe mal gelesen, dass der sogenannte Virtual Memory speziell für Arrays variabler Größe reserviert wird. Wenn ich Speicher mit malloc reserviere (z.B. mit malloc(N * sizeof(int))) und ich vorher einem N schon im Quellcode einen Wert zugewiesen hab (int N = 1000;), wird dann dieser Speicher auch aus dem Virtual Memory von Windows geschöpft?





  • Blubberblase schrieb:

    Wenn ich Speicher reserviere mit malloc, ist dieser dann immer leer, also sind die Speicherzellen immer mit Nullen gefüllt?

    nein, malloc reserviert nur dem Speicher. man: calloc(3) funktioniert wie malloc mit dem Unterschied, dass calloc den reservierten Speicher auf 0 setzt.



  • wird dann dieser Speicher auch aus dem Virtual Memory von Windows geschöpft?

    Vielleicht solltest du darüber meditieren, ob ANSI-C-Funktionen sich mit Windows auskennen müssen...



  • der speicher kommt von obenlinks



  • Blubberblase schrieb:

    Hallo Forum!
    Wenn ich Speicher reserviere mit malloc, ist dieser dann immer leer, also sind die Speicherzellen immer mit Nullen gefüllt?
    Ich habe mal gelesen, dass der sogenannte Virtual Memory speziell für Arrays variabler Größe reserviert wird. Wenn ich Speicher mit malloc reserviere (z.B. mit malloc(N * sizeof(int))) und ich vorher einem N schon im Quellcode einen Wert zugewiesen hab (int N = 1000;), wird dann dieser Speicher auch aus dem Virtual Memory von Windows geschöpft?

    also, wenn du schon vorher 1000*sizeof(int) speicher reserviert hast und dann im programm noch einmal malloc(N * sizeof(int)) aufrufst, wird ein anderer speicherbereich für die reservierung benutzt. 🙂

    malloc 'fragt' windows, ob speicher in der gewünschten größe bereit steht. windows antwortet entweder mit 'ja' und spendiert nen zeiger auf den von windows verwalteten speicherplatz, wenn ich mich nicht irre 😉
    oder aber windows sagt nööö, kein platz mehr da und 'sagt' malloc das NULL zurückgegeben wird
    :xmas2: :xmas2: :xmas2:



  • antwort schrieb:

    der speicher kommt von obenlinks

    Wie jetzt? Nicht von unten rechts? 😮

    Kaum hat das neue Jahr begonnen und schon zerstörst du mir mein Weltbild 🕶


Anmelden zum Antworten