Run-Time Check Failure #2 - Stack around the variable 'cBuffer' was corrupted.
-
1. Wär gut, wenn du ein wenig mehr relevanten Codee zeigen würdest. Die Funktion SendCmdWithAnswer scheint mir spontan die einzige mögliche Fehlerursache zu sein, weil nur sie cBuffer beschreibt. Kannst du die auch mal posten?
2. Was passiert, wenn du cBuffer größer machst? Setz es mal auf 4096 oder so, gibts dann auch noch nen Fehler?
3. Was soll "case TYPE1::"?? Du hast doch keinen doppelten Doppelpunkt im Code stehen, oder? Hast du das etwa abgetippt? Code sollte man immer copypasten, um Tippfehler zu vermeiden.
4. Bitte benutze cpp-Tags, dann wird der Code schön formatiert und ist auch deutlich lesbarer.
-
1. Vermute ich auch, aber die gehört zu einer gekauften Bibliothe, ich habe also keinen Source davon.
2. Muß ich mal teste
3. Hast natürlich recht, aber ich habe die Begriffe TYPE1 und TYPE2 (obwohl eh kommentiert) ausgetauscht
4. ich habe DEFINITIV Codeeinrückungen vorgenommen, aber irgendwie sind die verschwunden
-
Thule schrieb:
4. ich habe DEFINITIV Codeeinrückungen vorgenommen, aber irgendwie sind die verschwunden
Wie kann man sich C++ Programmierer nennen, wenn man nicht mal weiß, wie html funktioniert?
deshalb gibt es ja auch die cpp-tags. du könntest sie so gar benutzen und es wäre nicht nur genau so eingerückt, wie du es hast sondern es würde auch den code an sich leserlicher machen(syntax-highlighting)bb
-
Thule schrieb:
Ich benutze cBuffer um Zeichen von der serielle Schnittstelle einzulesen. Allerdings ist das Einlesen auf 100 Zeichen begrenzt.
Wo gibst du das denn überhaupt an? Ich kann da nix passendes sehen.
Haste die Lösung mittlerweile gefunden?
-
C++ und Html unabhängig voneinander sind und nicht aufeinander angewiesen sind ?
-
Thule schrieb:
C++ und Html unabhängig voneinander sind und nicht aufeinander angewiesen sind ?
Zu deinem Nebensatz ein Hauptsatz und ein überleitendes Wort fehlen?
-
Thule schrieb:
C++ und Html unabhängig voneinander sind und nicht aufeinander angewiesen sind ?
aber zum c++ verständnis gehört auch grundlegende pc-kenntnisse. und dazu gehört eben ein wenig mehr, als zu wissen, wo das keyboard liegt, wie der monitor an geht und die telefonnr. des technikers zu wissen...
und ich denke, dass man mit dazuzählen kann, zu wissen, dass bei html ein leerzeichen genau so ausgegeben wird wie 999999 davon nacheinander(und nach nem zeilenumbruch - bzw allg. nach nem nicht darstellbaren zeichen alle whitespace-chars ignoriert werden).
nun ja - poste halt noch mal deine fkt(mit cpp tags) und die deklaration der Fkt. "SendCmdWithAnswer" und nen Link zur evtl. vorhandenen Doku bzw den Kommentaren über der Fktbb
-
1. Bitte auch die Betreffzeile mitlesen, und nicht nur einen Teile der Nachricht
2. Wie gesagt, es handelt sich um eine fertige Bibliothek, und das Leselimit wird vorher schon mit einer anderen Funktion gesetzt
3. Wie bereits viel weiter oben erwähnt, es funktioniert wenn ich schreibe:static char cBuffer[255]; anstelle von char* cBuffer; cBuffer = new char[255]; ... ... ... delete [] cBuffer;
-
Ich behaupte durchaus, dass ich PC-Kentnisse habe, und die reichen sogar sehr weit zurück. Ich denke mal dass Du wiederum mit Begriffen wie Daisy-Chain und 8059 (ein Baustein, der früher als Interrupt-Controller im PC eingesetzt war) weniger etwas anfangen kannst. Ich bin mit dem PC sozusagen groß geworden, aber glücklicherweise noch ohne Windows. Ich habe bereits unter MS-DOS Software entwickelt, die sich in den berühmten Keyboard-Interrupt eingehängt hat (1Ch), der 18,2 mal pro Sekunde aufgerufen wurde und habe dadurch unter MS-DOS eine serielle Kommunikation im Hintergrund ablaufen lassen (Mischungs aus C und Assembler).
Heute entwickle ich fast ausschließlich Software für Microcontroller, falls Dir das was sagt. Da gibt es nicht mal ein Betriebssystem.
Und alles in allem kam ich bis heute sehr gut ohne HTML-Kenntnisse zurecht.
Mag ja sein, dass es üblich ist hier die Code-Snippets entsprechend zu formatieren. Da ich aber meine Probleme meistens selbst löse, bin ich sehr selten in solchen Foren zu finden.
Aber deswegen lasse ich mich nicht für doof erklären, sorry.
-
Thule schrieb:
3. Wie bereits viel weiter oben erwähnt, es funktioniert wenn ich schreibe:
static char cBuffer[255]; anstelle von char* cBuffer; cBuffer = new char[255]; ... ... ... delete [] cBuffer;
Das heisst nichts. Undefiniertes Verhalten != Absturz.
Wenn Du auf Deinem Microcontroller in irgendeinen freien Bereich im RAM ein paar Bytes zuviel übernagelst, passiert ja auch etwas anderes als wenn Du Dir auf dem Stack ein paar Verwaltungsinformationen oder die Rücksprungadresse oder sonstwas überschreibst.
-
Das stimmt schon,
aber sowohl die Variante
static char cBuffer[255];als auch die Variante mit
new
und
delete
legen mir cBuffer in den Heap.
-
Eigentlich landet ein static array im globalen Datenbereich des Programms. Nicht im Heap.
-
Thule schrieb:
[...] Aber deswegen lasse ich mich nicht für doof erklären, sorry.
np
nur noch mal zu dem nie hier posten:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html
das ist extra für leute wie dich da, die nicht von allein drauf kommen, Code ordentlich zu formatieren:**Schreib lesbar.**Für Sourcecode gibts die [cpp]-Tags, mit gut erkennbarem Syntaxhighlighting.
hieß aber nicht, dass du
[cpp]
new
[/cpp]
unddelete
schreiben musst. aber ab 2 zeilen könnte man die tags nehmen...
Thule schrieb:
1. Bitte auch die Betreffzeile mitlesen, und nicht nur einen Teile der Nachricht
2. Wie gesagt, es handelt sich um eine fertige Bibliothek, und das Leselimit wird vorher schon mit einer anderen Funktion gesetzt
3. Wie bereits viel weiter oben erwähnt, es funktioniert wenn ich schreibe:static char cBuffer[255]; anstelle von char* cBuffer; cBuffer = new char[255]; ... ... ... delete [] cBuffer;
ich hab den kompletten thread gelesen - sonst hätte ich definition und nichtg deklaration geschrieben...
du scheinst aber nicht zu wissen, was eine deklarierung ist
und ne doku zu der fkt wirds ja vermutlich auch geben, wenn es gekauft ist...naja, hf
PS: was ist das denn fürn cpp-tag bug?