Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Speicherreservierung mit malloc, calloc,... Kategorie: Progr. Assembler, TaskingTools, OS (von Dietmar Weickert - 25.02.2004 16:53)
Als Antwort auf Re: Speicherreservierung mit malloc, calloc,... von Dominik - 25.02.2004 16:40
Ich nutze:
C-Control II Station, OSOPT V3.0
Hallo Dominik!

Falls alle Stricke rei�en: Was hältst du von 12 Feldern zu je 256 Bytes?
Dass du in deine globalen Felder nicht schreiben kannst, erstaunt mich einigermaÃ?en. Auch dass die
lokalen ab einer gewissen Grö�e versagen, lässt nichts Gutes ahnen (falsche Stack-Arithmetik?).
Bitte lasse uns wissen, was heraus kommt.

Beste Grü�e,
Dietmar.

> Hallo Dietmar!
>
> Dein Vorschlag erscheint mir auch die weniger problematische Methode. Da ist allerdings das
> Problem, da� bei lokalen Arrays grö�er ca. 300 Elementen nur noch 'Mist' oder gar nichts
> mehr gespeichert/gelesen werden kann (offensichtlich nicht genügend Platz(?)). Nun habe ich die
> Arrays global deklariert und eigentlich nur noch das Problem, daÃ? ich die Arrays zwar
> lesen aber nicht beschreiben kann. Das liegt wohl daran, da� ich die speziellen Regeln für den
> Zugriff noch nicht ganz durchschaut habe. Aber da bin ich zuversichtlich (für Tips bin ich natürlich
> dankbar!). Ist halt alles nicht so bequem wie auf dem PC :-).
>
> Danke! Grü�e,
> Dominik...
>
> > Hallo Dominik!
> >
> > Warum allokierst du die Arrays dynamisch vom Heap? Ich könnte mir vorstellen, dass entweder der
> > Heap einfach zu klein ist und du durch eine Prüfung des OS einen Laufzeitfehler erhältst, oder
> > dass du womöglich gar Codebereiche überschreibst, sodass es zu undefinierten Befehls-Sequenzen
> > kommt. Beides würde die Meldung erklären. Auch ein zu stark segmentierter Heap kann zu einem
> > Fehlschlagen des Allokierens führen. Ungerade Adress Boundaries sind als Ursache eher
> > auszuschlie�en. Prüfst du, ob du als Ergebnis einen NULL-Pointer erhältst? Der würde ein
> > Fehlschlagen des Allokierens anzeigen, eine weitere Verwendung dieser Adresse löst ebenfalls einen
> > Laufzeitfehler aus.
> > An deiner Stelle würde ich die drei Felder einfach deklarieren:
> >
> > char a[1024], b[1024], c[1024];
> >
> > Das gibt dem Compiler wenigstens die Chance, bereits während der Ubersetzung zu prüfen, ob genug
> > Speicher verfügbart ist.
> >
> > Beste Grü�e,
> > Dietmar.


    Antwort schreiben


Antworten:

Re: Speicherreservierung mit malloc, calloc,... (von Dominik - 26.02.2004 15:02)
    neuer Thread (von Dominik - 26.02.2004 20:58)