Anzeige:
Ergebnis 1 bis 6 von 6

Thema: malloc / realloc Speicherreservierung

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.12.2002
    Beiträge
    10

    malloc / realloc Speicherreservierung

    Hallo,

    ich habe eine frage zu C bzw. ein problem

    ich möchte mir speicher reservieren für ein array

    angefangen mit 10*sizof(int) (40bytes) und den dann immer um 10er blöcke (40)erweitern, wie oft das geschehen soll/muss kann ich nicht vorhersagen.
    nun grundsätzlich funtioniert es, jedoch nur bis 267*4 Bytes danach bekomme ich immer speicherzugriffsfehler, warum ?
    wenn ich gleich einen block von ca. 1MB reserviere dann gibts keine problem,

    nun hab ich auch probiert ca. 14mb zu mit malloc zu reservieren und dann noch einmal 14mb mit realloc dazu, gibt keine schwierigkeiten bis ich anfange den bereich zu beschreiben den ich mit realloc reserviert habe.

    hat jemand einen tipp oder ne idee ?

    danke gruß martin

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Benutzt du den Zeiger, den dir realloc() zurückgibt oder den von malloc()?
    Ersteres wäre laut Manpage korrekt, beim Aufruf von realloc() kann sich die Stelle, an der deine Daten im Speicher sind, ändern und deshalb darf der Rückgabewert von malloc() dann nicht mehr weiterverwendet werden.

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Beiträge
    55
    hört sich so ähnlich an wie mein thread ein bißchen weiter unten (Arraygrößen)

    @ripper: ich mache bei mir u.a.
    BYTE *p = malloc(1);
    und später dann z.b. realloc(p, dwSize);

    bei 300 bytes funzt alles, bei 3000 nicht mehr....

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Wie gesagt, realloc() gibt dir die neue Speicheradresse deiner Daten zurück, also wenns
    p = malloc(...);
    heisst, musst du später auch
    p = realloc(...);
    verwenden.

    rosenstolz hat dir in "deinem" Thread einen Codeauschnitt zur Verfügung gestellt

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.10.2002
    Beiträge
    55
    MUSS es p = realloc sein?
    reicht nicht eigentlich auch realloc(p, .... ?
    müsste, schließlich funzt mein programm ja mit z.b. 300 bytes

  6. #6
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Original geschrieben von Camel69
    MUSS es p = realloc sein?
    reicht nicht eigentlich auch realloc(p, .... ?
    müsste, schließlich funzt mein programm ja mit z.b. 300 bytes
    Ja. Siehe auch man realloc. Das dein Programm funzt stimmt nicht, bei 3000 bytes stürzt es schließlich ab.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •