Ich habe eine neue Funktion zu meinem Code hinzugefügt und jetzt wird eine Ganzzahl, die ich verwendete, von einer Art Speicherüberlauf betroffen. (Beachten Sie, dass dies eine .ino Skizze für ein Arduino Uno ist über)Speicherleck in Ganzzahl C++
Statt Dekrementieren um 1 mit xPos--;
dekrementiert von 256 (Wenn ich die printtext entfernen funktionieren die Überschreitung nicht passiert).
Die ganzzahligen xPos und der char buffer mit
int xPos = 0;
char buffer[26];
gerade definiert unter der einschließt. Die Funktion u8g.drawStr zeichnet die Zeichenfolge auf meiner Anzeige und nimmt zwei Ints für x und y und ein char * als die Zeichenfolge als Argumente.
void printText(const char* inputText)
{
int y = yPos;
for (int i = strlen(inputText); i > 0; i -= 25)
{
strncpy(buffer, &inputText[strlen(inputText) - i], i >= 25 ? 25 : i);
buffer[26] = '\0';
u8g.drawStr(0, y, buffer);
y += 8;
}
}
Jeder Rat sehr geschätzt :)
'buffer [26] = '\ 0';' ist ein Pufferüberlauf; Größe 26 bedeutet, dass die gültigen Indizes 0 bis 25 sind. –
Sie können auch '25' als Argument für' strncpy' verwenden, weil es die Eingabe nicht mehr lesen wird, wenn es den Null-Terminator erreicht –
Vielen Dank! Das hat es gelöst, verdammt, ich war blind. – werkamsus