昨天帮导师做的一个程序出了内存泄露的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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复