kostenloser Webspace werbefrei: lima-city


Frage zu new und malloc

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    krisi12345

    Kostenloser Webspace von krisi12345

    krisi12345 hat kostenlosen Webspace.

    Wenn man mit malloc oder new in C Speicher alloziert z.B. bei
    int * i;
    i = new int[1];
    i = new int[2];

    wird dann Speicher im Wert von 3 int's alloziert also der Speicher dazu addiert oder wird der zugehörige Speicher immer komplett neu Reseviert also das "i" am ende Speicher für zwi int's hat?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Da du den Speicher nicht wieder freigibt ist immernoch der Platz der 3 Integer eingebunden.
    Solange du keinen weiteren Zeiger hast, der auf die Speicheradresse zeigt solltest du den immer frei geben.
    int * i;
    i = new int[1];
    delete i;
    i = null;
    i = new int[2];

    oder aber:
    int * i;
    int * j;
    i = new int[1];
    j = i;
    i = new int[2];

    Bei dem zweiten sind aber immernoch 3 mal int belegt.
    beachte auch, dass Speicher den du dir nimmst und nicht löschst nach dem ausführen je nach compiler etc. durchaus auch weiterhin belegt bleibt. (Memory Leaks)

    Beitrag zuletzt geändert: 21.11.2010 15:09:26 von reimann
  4. edit: sry, ich hab nicht aufgepasst und Unsinn erzählt :stupid: :wall: danke für den Hinweis...

    Beitrag zuletzt geändert: 23.11.2010 13:13:57 von nomis
  5. @nomis: zum Vergrößern von Speicherbereichen muss man realloc() verwenden. Wenn man malloc() wie 'new' in obigem Beispiel verwendet erzeugt man wieder ein Speicherleck.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!