【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又はメールにて。

まる。をフォローする
その他の記事はこちら
【最新版】DMM WEBCAMP徹底比較!就業両立・専門技術・短期集中コースのどれがおすすめ?タイプ別に解説
世界初!?はんだ用卓上リフロー炉で「リフローたこ焼き」は調理できるのか
【エンジニアのキャリアを伸ばす】tech boostの持つ、2つのコースとは?特徴やメリットを解説!【未経験からフリーランスになろう】
【ネタバレ】2024年しろたん新春福袋を購入したので中身を紹介します!【限定品は?総額いくら?】
[Touchdesigner]CHOPの波形グラフをオーバーレイ(重ねて表示)する方法

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