【ESP32】CORRUPT HEAP: Bad tail at 0x3ffcfc3c. Expected 0xbaad5678 got 0x3ffcfb58エラーの対処法

Arduino IDEにてErrorが表示された時の解決法

事象

こちらのマイコンを使ってJ〇J〇の奇妙な天気予報アプリを作っていたところ、

ORRUPT HEAP: Bad tail at 0xXXXXXXXX
Expected 0xXXXXXXXX got 0xXXXXXXXX

というエラーがシリアルモニタにて表示され、突然再起動を繰り返すようになった。

原因

JSON形式のデータを格納する為のメモリサイズをオーバーした書き込みを行っていた。(いわゆるバッファオーバーフローまたはバッファオーバーランと呼ばれる事象)

const size_t mem_cap = 2048;                                  // JSON形式データ格納用メモリサイズ
StaticJsonDocument<mem_cap> n_jsondata;                       // JSON形式データ格納用

解決法

バッファを許容サイズに設定し直す。

const size_t mem_cap = 8192;                                  // JSON形式データ格納用メモリサイズ
StaticJsonDocument<mem_cap> n_jsondata;                       // JSON形式データ格納用

なお、書き込みサイズの計算はこちらのサイトで行うと非常に便利。
Processor:ESP32, Mode:Deserialize, Input Type:String を選択)

以上です。

まる。

━━━━━━━━━━━━━━━━━
■未経験OK!大学生インターン募集中!
プログラミングやITなど
興味ある方ご連絡ください‎。
(๑ > ﻌ <`)و✧
━━━━━━━━━━━━━━━━━
Python歴5年のフルスタックエンジニア&ヨギー。
大学は心理学専攻、趣味はヘルスケア全般。
最近は自作脳波デバイスの設計とそれを使ったインタラクティブアート生成に勤しみ中。

↓アートとか日常。
Instagram:@malmal0v0

お仕事のご依頼はDM又はメールにて。

まる。をフォローする
その他の記事はこちら
[Touchdesigner]1秒に1増加する変数をPythonで書く方法
【Touchdesigner】e-06って?値に英字が入る理由を解説
教育訓練給付金で45万円付与!4ヶ月で未経験からエンジニアを目指せるディープロ(DPro)を解説
【4人に1人が盗み見被害!?】意外と知られていない、公共フリーWiFiの危険性と対策について解説
開発終了した筋電によるジェスチャー操作デバイスMyo armbandをどこまで使えるか検証してみる(2023年)

タイトルとURLをコピーしました