删除动态数组后堆损坏

时间:2015-07-12 14:46:42

标签: c++ error-handling runtime-error heap-corruption

我知道这个问题已被多次询问,但我无法找到错误的解决方案 我试图制作一个程序来检查给定的矩阵是否是对称的,用户输入测试用例的数量然后是矩阵的大小,输出是否是对称的 该程序工作正常,直到我尝试超过3的大小,它打破了这个错误,并在调试它似乎它在删除[] arrL

contained(X,[X|_]).
contained(X,[E|Es]) :-
   dif(X, E),
   contained(X, Es).

notContained(_X, []).
notContained(X, [E|Es]) :-
   dif(X, E),
   notContained(X, Es).

1 个答案:

答案 0 :(得分:2)

arrL和arrR分配大小为r,但随后 arrL [c ++] = p [i] [j]; 执行次数超过r次,所以c超过r,所以你已经破坏了你的堆。