|
9#
楼主 |
发表于 2023-4-14 17:07:50
|
只看该作者
本帖最后由 noobnobb 于 2023-4-14 17:50 编辑
感谢大佬的回复,不过实际上发生异常时这条分配/释放语句并没有完全执行,应该是在执行过程中中断了,但有意思的是,在加与不加stat = status这个参数的对比过程中,我发现其在debug界面表现出的结果是不同的,下面附了两张图,分别是在allocate中加入与不加stat参数的运行实例。这也确实印证了您的想法,即这条allocate语句应该是没有正确分配到空间或是中断运行没有正常退出。之后又做了一个小测试,在allocate前将status赋为其他值,发现只要该allocate语句触发异常就不会改变status的值,试过0,-1,2,是在debug的变量页面查看的status值,应该可以判断是异常退出了allocate语句,附上status=2和status=0的图在最下。
再补充一下,上述的问题,目前运行了几十次全部出现在动态一维数组中,轮流出现。
我目前是在往数组越界方面着想,因为我在尝试过其他一些小矩阵(3*3)的例子之后发现仍然有这个allocate问题,只是其成功率会很高,只有很少的几率会出现问题,大概是8:2的比例,试过4个3*3的小矩阵的例子,结果也是想要的结果,因此我认为不可能是内存不够的问题。
请大佬指示!!!
|
|