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 | ||
| ||
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) |