首页 > 解决方案 > 运行时错误:引用绑定到“int”类型的空指针 (stl_vector.h)

问题描述

尝试运行以下代码时观察到运行时错误!

第 1034 行:字符 9:运行时错误:引用绑定到类型为“int”的空指针 (stl_vector.h) 摘要:UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9 /../../../../include/c++/9/bits/stl_vector.h:1043:9

#include <algorithm>
#include <climits>
#include <vector>
class Solution {
public:
    int minimumTotal(vector<vector<int> > &triangle) {
        vector< vector<int> >  soln(1000, vector<int>(0)) ;
        vector< vector<int> >  index(1000, vector<int>(0)) ;
        int ans = INT_MIN ;
        int tmp = 0;
        int ind = 0;
        soln[0][0]=triangle[0][0];
        index[0][0]=0;
        int triangle_size = int(triangle.size());
        for (int i = 1 ; i < triangle_size ; i++) {
            int soln_size = int(soln[i-1].size());
            for (int j = 0; j < soln_size ; j=j+2) {
                ind = index[i-1][j];
                tmp = soln[i-1][j] + triangle[i][ind];
                if (tmp > ans) {
                    ans=tmp;
                }
                soln[i][j] = tmp;
                index[i][j] = ind;
                tmp = soln[i-1][j] + triangle[i][ind+1];
                if (tmp > ans) {
                    ans=tmp;
                }
                soln[i][j+1] = tmp;
                index[i][j+1] = ind+1;            
            }
        }
        return ans;
    }
};

标签: c++

解决方案


    int minimumTotal(vector<vector<int> > &triangle) {
        vector< vector<int> >  soln(1000, vector<int>(0)) ;
        vector< vector<int> >  index(1000, vector<int>(0)) ;
        int ans = INT_MIN ;
        int tmp = 0;
        int ind = 0;
 >>>>   soln[0][0]=triangle[0][0]
 >>>>   index[0][0]=0;

这里。soln是一个大小为 0 的 1000 个向量,soln[0]是一个大小为 0 的向量,因此soln[0][0]超出范围。访问它是一个UB。


推荐阅读