codeblocks调试时出现0x76f369f5 unlock+21这样的指针代表什么意思?

以下为代码,是一个用递归法求最大子序列的程序,输出应该是越界了

class Max_Subarray
{
public:
   Max_Subarray(int *left,int *right,int ans): low(left),high(right),sum(ans) {}
   Max_Subarray(const Max_Subarray &target) {low = target.low; high = target.high; sum = target.sum;}
   int *low;
   int *high;
    int sum;
};

Max_Subarray find_max_subarray(int *low,int *high)
{
    if (high-low==0)
        return Max_Subarray(low,high,0);
    if (high-low==1)
    {
        if ((*low)<0)
            return Max_Subarray(low,high,0);
        else
           return Max_Subarray(low,high,*low);
    }
    int *middle = low+(high-low)/2;
    //cout << "+" << high-middle << "+ " << endl;//这一句删掉就正常了
    Max_Subarray left_Max(find_max_subarray(low,middle));
    Max_Subarray right_Max(find_max_subarray(middle+1,high));
    Max_Subarray middle_Max(find_max_crossing_subarray(low,middle,high));
    if (left_Max.sum>right_Max.sum)
        if (left_Max.sum>middle_Max.sum)
            return left_Max;
    else
        if (right_Max.sum>middle_Max.sum)
            return right_Max;
    else
            return middle_Max;
}

Max_Subarray find_max_crossing_subarray(int *low,int *middle,int *high)
{
    if ((*middle)<0)
        return Max_Subarray(middle,middle,0);
    int sum = 0,part_Sum = 0, *left = middle, *right = middle;
    for (int *pointer = middle-1,sum_0 = 0;pointer>=low;--pointer)
    {
        if (sum_0+(*pointer)<0)
            break;
        sum_0 += (*pointer);
        if (sum_0>part_Sum)
        {
            left = pointer;
            part_Sum = sum_0;
        }
    }
    sum += part_Sum;
    part_Sum = 0;
    for (int *pointer = middle,sum_0 = 0;pointer<high;++pointer)
    {
        if (sum_0+(*pointer)<0)
            break;
        sum_0 += (*pointer);
        if (sum_0>part_Sum)
        {
            right = pointer;
            part_Sum = sum_0;
        }
    }
    sum += part_Sum;
    return Max_Subarray(left,right+1,sum);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值