我是靠谱客的博主 想人陪小蝴蝶,最近开发中收集的这篇文章主要介绍C/C++动态分配连续空间,下标越界导致的free():invalid next size问题,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
昨天帮导师做的一个程序出了内存泄露的bug(在VS上程序运行一切正常,等return返回后才出错)
而且是程序运行结束后才出现的错误,在退出前一切代码都顺利执行完了,只是return之后出错。
之后我在Linux下重新编译运行程序,提示的信息更详细:
free(): invalid next size (normal)
然后下面显示Backtrace和Memory map等一大串错误信息。
最终调试发现问题在于,读取数据格式不对,导致字符串转换后的int小于0,下标越界。我只检查了上限N,没检查下限0。
那么问题来了,为什么动态分配的内存能访问下标为负的地方呢?来写几个程序测试下。
#include <iostream> using namespace std; int main() { const int N =
最后
以上就是想人陪小蝴蝶为你收集整理的C/C++动态分配连续空间,下标越界导致的free():invalid next size问题的全部内容,希望文章能够帮你解决C/C++动态分配连续空间,下标越界导致的free():invalid next size问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复