回答編集履歴
1
修正
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
|
-
|
13
|
+
あるいは、x += 1 とか y++ をやってmallocしたときの先頭アドレスでない状態にしてからfreeを行った場合も同じエラーが出ます。
|
14
14
|
|
15
15
|
今回起こっているのはそういう現象です。
|
16
16
|
|
17
|
-
xの指す領域で
|
17
|
+
xの指す領域でサイズを超えて書き込んでいるか、xやyを更新していないかをを調べてください。
|