mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Data Abort: Heap Overflow


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

wenn man häufig aber nicht bei jedem durchlauf seines programms einen 
data abort erhält, der sich auf eine Adresse im Heap bezieht (meist in 
der Mitte des internen SRAMs ); deutet dies auf einen Heap Overflow hin?

z.b. befindet sich der Stack Ptr bei 0x00201208 und darüber geht ja der 
Heap wachsend zum Ende des SRAMs los bis 0x002FFFFF - die Fehler liegen 
meistens bei ca. 0x0026563 oder 0x0028945 -> also nicht direkt am Ende 
vom Heap.

Oder kann es sein, dass irgendein Pointer auf diesen Bereich verweist? 
z.b. von einer Funktion oder ähnlichem? Wenn ich mir meine Funktionen 
und Variablen im Watch Window anschaue, sind die Speicheradressen alle 
richtig (nämlich nicht im Heap sondern im Flash bzw. RAM).

In meinem Programm verwende ich retarget.c für eine printf() 
Implementierung. Wieviel Speicher nimmt so ein printf-Aufruf ungefähr in 
Anspruch, kann man sich das irgendwie ausgeben lassen? aber nicht mit 
sizeof(printf("hallo Welt")); oder?

Bernd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.