1. ホーム
  2. gcc

[解決済み】valgrindエラーの解釈 サイズ4の無効な書き込み

2022-01-20 16:28:14

質問

最近、valgrindを使用して、私が取り組んでいるプログラムのバグを追跡しようとしていたのですが、エラーの1つが発生しました。

==6866== Invalid write of size 4
==6866==    at 0x40C9E2: superneuron::read(_IO_FILE*) (superneuron.cc:414)

問題の行番号 414 は次のとおりです。

amplitudes__[points_read] = 0x0;

であり、amplitudes__は先に定義したとおりです。

uint32_t * amplitudes__ = (uint32_t* ) amplitudes;

uint32_tは4バイトなので、これが書き込みサイズになるのは明らかですが、なぜこれが無効なのか、どなたか教えていただけませんか?

解決方法は?

points_read に割り当てたメモリを越えて(あるいはその前に)書き込んでいるため、範囲外になっている可能性が高いです。 amplitudes .