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 15:06)
Als Antwort auf Speicherreservierung mit malloc, calloc,... von Dominik - 25.02.2004 11:28
Ich nutze:
C-Control II Station, OSOPT V3.0
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.

> Hallo!
> Hat irgendjemand Erfahrungen mit der Verwendung von 'malloc' oder 'calloc' zur
> Speicherreservierung bei der Programmierung der CC2-Unit unter C mit der Tasking-EDE?  
>
> Ich mu� drei Character-Arrays mit je 1024 Elementen speichern und möchte möglichst elegant
> den Speicherplatz dafür anfordern. Das Problem ist, da� bei Aufruf einer der oben genannten
> Funktionen sofort der Fehler 'ILL OPA' auftritt. Gibt es eine Möglichkeit, zu verhindern, da� diese
> Funktionen auf ungerade Speicheradressen zugreifen (da das ja wahrscheinlich der Grund für die
> Fehlermeldung ist)? Hat das 'Memory Model' (in diesem Fall 'Large') EinfluÃ? darauf?
>
> Oder gibt es noch eine bessere Möglichkeit um Speicher zu reservieren? Oder eventuell die Arrays
> als globale Variablen mit '_at' an eine sichere Stelle (an welche) im Speicher zu schreiben? Gibt
> es einen Speicherbereich der unter OSOPT_V2 komplett ungenutzt ist und trotzdem für Variablen
> genutzt werden kann?
>
> Ich habe zwar einige Erfahrung mit C aber noch sehr wenig mit C auf CC2.
> Wäre super, wenn mir jemand helfen könnte. Danke!


    Antwort schreiben


Antworten:

Re: Speicherreservierung mit malloc, calloc,... (von Dominik - 25.02.2004 16:40)
    Re: Speicherreservierung mit malloc, calloc,... (von Dietmar Weickert - 25.02.2004 16:53)
        Re: Speicherreservierung mit malloc, calloc,... (von Dominik - 26.02.2004 15:02)
            neuer Thread (von Dominik - 26.02.2004 20:58)