c++ - 运行时错误:引用绑定到“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;
}
};
解决方案
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。
推荐阅读
- php - laravel 护照和端点权限
- python - 展开嵌套的 Python 字典
- python-2.7 - Python 2.7 子流程模块:在主题行中发送带有日期的电子邮件
- jmeter - 尽管请求成功,但 JMeter 错误率太高
- angular - 间谍上带有“和”的角茉莉花单元测试错误
- java - 在 Openshift3 上部署 Java Web 应用程序
- python - Pandas 加入字符串数据类型
- javascript - 尝试使用jQuery增加复选框的可点击区域
- asp.net - 如何在powershell中执行具有[[FromForm]]参数的API PUT方法
- typescript - 打字稿图书馆组织