我是靠谱客的博主 想人陪小蝴蝶,这篇文章主要介绍C/C++动态分配连续空间,下标越界导致的free():invalid next size问题,现在分享给大家,希望可以做个参考。

昨天帮导师做的一个程序出了内存泄露的bug(在VS上程序运行一切正常,等return返回后才出错)

而且是程序运行结束后才出现的错误,在退出前一切代码都顺利执行完了,只是return之后出错。

之后我在Linux下重新编译运行程序,提示的信息更详细:

free(): invalid next size (normal)

然后下面显示Backtrace和Memory map等一大串错误信息。

最终调试发现问题在于,读取数据格式不对,导致字符串转换后的int小于0,下标越界。我只检查了上限N,没检查下限0。

那么问题来了,为什么动态分配的内存能访问下标为负的地方呢?来写几个程序测试下。

复制代码
1
2
3
4
5
#include <iostream> using namespace std; int main() { const int N =

最后

以上就是想人陪小蝴蝶最近收集整理的关于C/C++动态分配连续空间,下标越界导致的free():invalid next size问题的全部内容,更多相关C/C++动态分配连续空间,下标越界导致的free():invalid内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部