当前位置: 首页 > 知识库问答 >
问题:

运行时错误:引用绑定到“int”类型的空指针(stl_vector.h)

麹繁
2023-03-14

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

第1034行:Char 9:运行时错误:引用绑定到类型为“int”(stl_vector. h)的空指针摘要:未定义行为清理器:未定义行为/usr/bin/.../lib/gcc/x86_64-linux-gnu/9/.../.../.../包含/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;
    }
};

共有1个答案

澹台承
2023-03-14
    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。

 类似资料:
  • 我要做的是将值存储在元素strucz数组中(该数组有一个成员void*data) 我已经把数组拼成了3个元素 我知道如果数据是int,你可以这样做,但是如果数据是空的,你怎么做呢* 我试过打字 但我得到消息预期表达式之前'in' 我的第二个问题是如何在元素结构中存储字符串(我不能使另一个成员成为字符串,它必须使用void指针) 我可以用strcopy或sscanf吗? 下面的主要样本,以防我做错了

  • 将一个值类型作为一个参数传递给函数或者作为一个方法的接收者,似乎是对内存的滥用,因为值类型一直是传递拷贝。但是另一方面,值类型的内存是在栈上分配,内存分配快速且开销不大。如果你传递一个指针,而不是一个值类型,go编译器大多数情况下会认为需要创建一个对象,并将对象移动到堆上,所以会导致额外的内存分配:因此当使用指针代替值类型作为参数传递时,我们没有任何收获。

  • 问题内容: 我是新手,尝试制作一个简单的网络爬虫。我不断收到“紧急情况:运行时错误:无效的内存地址或nil指针取消引用”,并且不知道如何解决该问题。我有一个“ advancedFetcher”功能和一个“basicFetcher”功能,在任何一个下都出现相同的错误。这个答案建议检查每个错误(我认为是错误),但仍然出现错误。谢谢! 编辑#1: 问题答案: 您的程序在惊慌之前打印错误吗?如果没有记错,

  • 我是新手,试图制作一个简单的网络爬虫。我一直收到“恐慌:运行时错误:无效的内存地址或零指针取消引用”,不知道如何解决这个问题。我有一个“AdvancedFetcher”函数和一个“basicFetcher”函数,我在其中任何一个下都收到相同的错误。这个答案建议检查每个错误(我想我有),但我仍然收到错误。谢谢! 编辑#1:

  • 怎么啦? 谢谢

  • 我正在代码中运行findBugs测试。 它报告NP_NULL_ON_SOME_PATH:以下代码中可能存在空指针解引用。 我不明白为什么它会这样报告?