我写的一个极大极小值算法,各个地方都是注意了内存了的,为什么还是内存泄露?

th_php 2017-12-07 02:40:23
完全不知道为什么内存泄露,而且,我泄露是第4层和以上就程序崩溃,3层和以下没问题,请有经验的大神看看,谢谢你们!
...全文
748 31 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2017-12-08
  • 打赏
  • 举报
回复
引用 20 楼 th_php的回复:
引用 18 楼 paschen 的回复:
建议使用一些工具检测内在泄露的位置,然后再分析原因
有什么工具啊,能居然定位到代码段
比如:http://vld.codeplex.com/
wodexiaojidan 2017-12-08
  • 打赏
  • 举报
回复
我昨天跟你说的那个地方你改过了没有, 先delete在置nullptr, 很有可能就是那里跑挂的
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
引用 18 楼 paschen 的回复:
建议使用一些工具检测内在泄露的位置,然后再分析原因
有什么工具啊,能居然定位到代码段
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
引用 17 楼 wodexiaojidan 的回复:
你在AI_BestMove_sample里面追踪下 看是不是迭代器里面跑挂的 打印一下迭代器偏移量
就是有地方内存泄露,我刚刚打开的时候内存是4000K
我下一子是6000K,然后下第三子就上W了,啊啊啊啊啊啊
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
麻烦帮我看看这个alpha-beta算法是不是有问题,我发现qDebug出来的都是MAXNUM和-MAXNUM棋盘棋子走法明显不对,直接按当前第一步棋盘的第一个子走的,也就是我放当头炮,对方出车一步,左边0,0位置的车,我不论做什么,它都出马0,1位置放0,2位置,以此类推的顺序出手
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
引用 28 楼 wodexiaojidan 的回复:
妹子?你是在读研吗?读人工智能吗?
工作啊,我只是希望研究研究算法啦
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
int chessmodel::AlphaBeta(int map[10][9],int depth,int alpha,int beta,bool team)
{
    int Score = 0;
    std::vector<AI_map> *maps;

    // 到达水平线,则返回局面评价值
    if (depth == 0)
    {
      qDebug()<<alpha<<"-----"<<beta;
      return this->Eveluate(map);
    }

    //生成对应的所有走法
    maps = AIMaps(team,map);

    // 逐一走这些走法,并进行递归
    for(std::vector<AI_map>::iterator iter = maps->begin();iter != maps->end();++iter)
    {
        Score = -this->AlphaBeta(iter->map,depth-1,-beta,-alpha,!team);

        if(Score > alpha)
        {
            alpha = Score;
        }

        if(Score < beta)
        {
            break;
        }

    }

    delete maps;

    return alpha;
}
    int max = -MAXNUM;
    int Score = 0;
    std::vector<AI_map> *maps;

    maps = AIMaps(true,map);

    for(std::vector<AI_map>::iterator iter = maps->begin();iter != maps->end();++iter)
    {
        Score = this->AlphaBeta(this->gameMapvac,depth-1,-MAXNUM,MAXNUM,false);

        if(Score > max)
        {
            max = Score;
            memcpy(&this->Bestmap,(&iter->map),sizeof(iter->map));
        }
    }

    delete maps;

    return true;
wodexiaojidan 2017-12-08
  • 打赏
  • 举报
回复
妹子?你是在读研吗?读人工智能吗?
wodexiaojidan 2017-12-08
  • 打赏
  • 举报
回复
昨天跟你说了一遍,你没留意,今天上午也跟你说了一遍, 现在自己发现了还是可以的
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
现在简单版电脑已经做出来了,我还经常打不过,用的4层极大极小算法,复杂版我准备用Alpha-Beta剪枝算法弄个八层吧,嘿嘿,等写完了回来结帖,不过有问题还是希望大家一起帮忙解决一下
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
解决了,同志们,原因是,我特么在删除每产生的AI_map的指针之前先把他指向了NULL,才删,白痴了,我没调试啥,都是白看看出来的。LOL
「已注销」 2017-12-08
  • 打赏
  • 举报
回复
引用 23 楼 ma100 的回复:
valgrind
那是linux的吧,我好像用不了
ma100 2017-12-08
  • 打赏
  • 举报
回复
valgrind
paschen 版主 2017-12-07
  • 打赏
  • 举报
回复
建议使用一些工具检测内在泄露的位置,然后再分析原因
wodexiaojidan 2017-12-07
  • 打赏
  • 举报
回复
你在AI_BestMove_sample里面追踪下 看是不是迭代器里面跑挂的 打印一下迭代器偏移量
「已注销」 2017-12-07
  • 打赏
  • 举报
回复
引用 14 楼 wodexiaojidan 的回复:
你确定是在AI_Sample的memcpy()之前崩溃的吗
我一运行程序,下子后,物理内存就占用高,但是我明明释放了指针啊,多余数组之类的内存空间了
「已注销」 2017-12-07
  • 打赏
  • 举报
回复
引用 14 楼 wodexiaojidan 的回复:
你确定是在AI_Sample的memcpy()之前崩溃的吗
是的,我觉得应该是在递归调用有地方的时候,内存泄露,不断泄露导致内存不够用了就崩溃
wodexiaojidan 2017-12-07
  • 打赏
  • 举报
回复
你确定是在AI_Sample的memcpy()之前崩溃的吗
「已注销」 2017-12-07
  • 打赏
  • 举报
回复
引用 12 楼 wodexiaojidan 的回复:
看你能不能追踪到是在一步段错误的,MAX = -MAXNUM 我有点没看懂, 还有delete和赋nullptr的顺序可以倒置一下
那个MAXNUM是个定义的宏,值为9999,主要是让它保证初始化最大最小值
wodexiaojidan 2017-12-07
  • 打赏
  • 举报
回复
看你能不能追踪到是在一步段错误的,MAX = -MAXNUM 我有点没看懂, 还有delete和赋nullptr的顺序可以倒置一下
加载更多回复(11)
内容概要:本书《Deep Reinforcement Learning with Guaranteed Performance》探讨了基于李雅普诺夫方法的深度强化学习及其在非线性系统最优控制中的应用。书中提出了一种近似最优自适应控制方法,结合泰勒展开、神经网络、估计器设计及滑模控制思想,解决了不同场景下的跟踪控制问题。该方法不仅保证了性能指标的渐近收敛,还确保了跟踪误差的渐近收敛至零。此外,书中还涉及了执行器饱和、冗余解析等问题,并提出了新的冗余解析方法,验证了所提方法的有效性和优越性。 适合人群:研究生及以上学历的研究人员,特别是从事自适应/最优控制、机器人学和动态神经网络领域的学术界和工业界研究人员。 使用场景及目标:①研究非线性系统的最优控制问题,特别是在存在输入约束和系统动力学的情况下;②解决带有参数不确定性的线性和非线性系统的跟踪控制问题;③探索基于李雅普诺夫方法的深度强化学习在非线性系统控制中的应用;④设计和验证针对冗余机械臂的新型冗余解析方法。 其他说明:本书分为七章,每章内容相对独立,便于读者理解。书中不仅提供了理论分析,还通过实际应用(如欠驱动船舶、冗余机械臂)验证了所提方法的有效性。此外,作者鼓励读者通过仿真和实验进一步验证书中提出的理论和技术。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧