c++项目中的诡异内存报错,我很暴躁

关于毕设的莫名c++ Bug

运行环境:gcc-7.3 ubantu-18.04

这些诡异的是往往之前还能运行,写着写着突然在某个点报错,人傻了。毕设项目中为了让程序有可移植性,有大量的变量进行了内存对齐,不知道是不是这个原因导致了出现了这么多诡异bug。

  • vector的push_back报错
    在这里插入图片描述
    如图,sch是一个vector<int *>类型,,,用sch.push_back(row),会突然报错,用insert后又突然变好了,不理解。

  • bitmatrix在类中位置定义问题
    在这里插入图片描述
    如图,最后一个变量,只能放在类中的末尾,该变量随后会进行如下申请变量空间

 bitmatrix = (int*)malloc(R*realK*R*2*sizeof(int));
        memset(bitmatrix,0,R*realK*R*2*sizeof(int));

如果这个变量声明不在类中的末尾,函数调用完后就会报错(出现段错误),,不懂。

  • *vector<char >在类中位置定义问题
    在这里插入图片描述
    同样,这个地方也是,这个vector<char *> intermedia 变量只能摆在末尾,本来这个变量定义在private中的,但是死活报错,最后放在public末尾后,问题解决了,不懂。。这个变量后续操作。
    for(int i = 0;i<xc->intermedia_schedule.size();i++)
    {
        char *tmp=NULL;
        int ret=posix_memalign((void**)&tmp,64,packetsize);
        if (ret) {
                fprintf (stderr, "posix_memalign: %s\n", strerror (ret));
        }
        intermedia.insert(intermedia.end(),tmp);
    }
    printf("intermedia_size: %d   xc->inter.size: %d\n",intermedia.size(),xc->intermedia_schedule.size());

其中tmp用了数据对齐,但是感觉与报错无关,,这个for循环是循环了正确次数,,但是一打印intermedia的大小,,显示负数或者几百万这种,,,不懂。。

  • delete导致报错
    在这里插入图片描述
    我不懂就这一段函数,,之前都运行好好的,咋就突然报错呢,,报错显示
    double free or corruption (out)
    应该是多重free造成的,,那我寻思着之前咋就能运行呢,后面才报错,。不理解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值