美文网首页
2020-03-20 DEBUG小记

2020-03-20 DEBUG小记

作者: PIOVA | 来源:发表于2020-03-21 10:57 被阅读0次

    今天debug过程中,在最后使用free释放之前调用malloc分配的一个数组指针(我们权且将其称为Arrayptr*)时,debug模式下的VS报了错。显示“已触发一个断点”。这说明stack里面出了错。由于本人还没有学得很深(捂脸),一下子没反应过来。在此之后删去此语句,顺利通过,但是结果出了错误。

    在深究这个结果为何错误的中途,我发现在之前的函数调用之中,该数组发生了严重的越界行为,导致数组指针出了问题。结合cpp reference上面的叙述:

    The behavior is undefined if the memory area referred to by ptr has already been deallocated, that is, free() or realloc() has already been called with ptr as the argument and no calls to malloc(), calloc() or realloc() resulted in a pointer equal to ptr afterwards.

    也就是说,数组越界这一行为改变了头指针指向的内容。这也很容易理解,因为本身只申请了K个size大小的空间,由于越界操作导致这个空间突然变大了一个size.(我不太清楚这个说法是否正确)
    由此可见数组下标的重要性.

    相关文章

      网友评论

          本文标题:2020-03-20 DEBUG小记

          本文链接:https://www.haomeiwen.com/subject/hddeyhtx.html