回答編集履歴

1

修正

2021/03/01 01:00

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -8,10 +8,10 @@
8
8
 
9
9
  多くの場合、メモリ破壊は領域外アクセス(SIGSEGV)になることが多いのですが、それ以外のエラーになる場合もあります。
10
10
 
11
- それは、続けてmalloc等で取った領域、xとyがあり、xを配列などとして使って取ったメモリを超えて書き込んで、yの管理領域を上書きしてしまいうエラーです。
11
+ それは、続けてmalloc等で取った領域、xとyがあり、xを配列などとして使って取ったメモリを超えて書き込んで、yの管理領域を上書きしてしまいうエラーです。このあと、yをfreeしようとすると、free関数がチェックをして管理領域が壊れていることを知らせます。
12
12
 
13
- このあとyをfreeようすると、free関数がチェックして管理領域壊れていることを知らせます。
13
+ るいは、x += 1 y++ やってmallocきの先頭アドレスでない状態にしてからfreeを行った場合も同じエラーます。
14
14
 
15
15
  今回起こっているのはそういう現象です。
16
16
 
17
- xの指す領域でサイズを超えて書き込んでいるはずですのでそれを調べてください。
17
+ xの指す領域でサイズを超えて書き込んでいるxやy更新していないかをを調べてください。