私は自分のコードに新しい関数を追加しました。そして、私が使った整数は何らかのメモリオーバーランの影響を受けます。 (私は機能printTextを削除した場合、オーバーランが発生しません)、それは256 によってデクリメント1 xPos--;
とによって代わりにデクリメントの整数へのメモリリークC++
を(これはArduinoの宇野ため.inoスケッチに関するされることに注意してください)。
整数XPOSとチャーバッファが含ま直下
int xPos = 0;
char buffer[26];
で定義されています。 u8g.drawStr関数は文字列を私のディスプレイに描画し、xとyの2つのintと引数としてのchar *をとります。
任意協議会は非常に高く評価されるだろう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;
}
}
:)
'buffer [26] = '\ 0';はバッファオーバーフローです。サイズ26は、有効なインデックスが0から25までであることを意味します。 –
また、ヌルターミネータにヒットしたときに入力の読み込みを停止するので、 'strncpy'の引数として' 25'を使用することができます –
ありがとう!それはそれを解決しました、私は目が見えませんでした。 – werkamsus