2025年6月9日月曜日

【STM32】 hangupポエム

codeを少し変えてビルドし直したらhangupするようになってしまいました.

↓こんなcodeでhangupしてる.起動後しばらくは動くこともある.瞬殺することもある.
 char str[50]; ①
 strcat(str, "echo "); ②
 strcat(str, buffer); ③

③でoverflowしてるんだろと思って長さをcareとかしたのですが、原因は②でした.

あぁ~っやってしまっている.

正しくは、
 strcpy(str,"echo "); ②
じゃないとダメですね.

切腹してお詫びします.

えいめん

6 件のコメント:

  1. コードを読むのが久しぶりでしばらく考えてしまいましたw

    配列や構造体はchar str[N] = {0}; と一括で0に初期化するのが好みでした。無駄な処理が増えるんでしょうけど、、、

    返信削除
    返信
    1. あ、その記述ってできるんですか
      なんか知らなかった
      わざわざforしてるところよ

      削除
    2. murasaki
      組み込みではコンパイラを信じてはいけないのでfor文が正解かと信じております。コンパイラの最適化オプションいじって丸ごと処理が消えることもありますが・・。

      削除
    3. str[N] = {0}; ←やってみたらとりあえずビルドは通った......

      削除
    4. murasaki
      普通なら起動時にスタートアップ処理でゼロクリされるかと思います。
      PC上とは違って宣言の仕方によってはビルド通っても初期化されないことはざらにありますので、ご注意下さい〜。

      削除
    5. 「信じるかどうかは貴方しだいです」
      ↑オカルト陰謀論

      削除