我是靠谱客的博主 想人陪小蝴蝶,最近开发中收集的这篇文章主要介绍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问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部