C++ 错误:未定义的行为管理器:死区信号

C++ 错误:未定义的行为管理器:死区信号,c++,linux,C++,Linux,编译完CodeWars代码后,我一直收到相同的错误。我试着处理所有的警告,但在那之后它还是会突然出现。我检查了同样的问题,其中一些问题已经通过处理边界或内存分配得到了解决。但是,在这里,我无法理解代码中的实际错误在哪里 这是我的密码: #include <vector> #include <numeric> #include <iostream> #include <algorithm> using

编译完CodeWars代码后,我一直收到相同的错误。我试着处理所有的警告,但在那之后它还是会突然出现。我检查了同样的问题,其中一些问题已经通过处理边界或内存分配得到了解决。但是,在这里,我无法理解代码中的实际错误在哪里

这是我的密码:

   #include <vector>
    #include <numeric>
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    
    int maxSequence(const vector<int>& arr)
    {   
        vector <unsigned long> temp2;
        vector <unsigned long> temp1;
        int result,sum_max = 0;
        for(unsigned long i = 0; i < arr.size(); ++i)
        {
            sum_max = arr[i];
            for(unsigned long j = i+1; j < arr.size(); ++j)
            {
                sum_max += arr[j];
                temp1.push_back(sum_max);
            }
            result = *max_element(temp1.begin(), temp1.end());
            temp1.clear();
            temp2.push_back(result);
        }
    
        result = *max_element(temp2.begin(),temp2.end());
        return result;
    }

问题是我试图在没有检查所有必需条件的情况下提交代码。所以,我必须添加if语句,以防输入向量为空

if (arr.size() == 0){return 0;} or if(arr.empty()){return 0;}

请提供,以便我们可以运行此代码。地址清理器发现一些空指针被取消引用。想想当
i
arr.size()-2
或更大时,
*max_元素(temp1.begin(),temp1.end())
如果
temp1
为空怎么办?@AlanBirtles我添加到代码中:if(!temp1.empty()){..}但它一直显示此错误消息。。。无论如何,谢谢你的建议,我没有注意到这同样适用于
*max_元素(temp2.begin(),temp2.end())
。。。
if (arr.size() == 0){return 0;} or if(arr.empty()){return 0;}