缓冲区溢出 - 数组索引越界(严重)
Buffer Overflow - Array Index Out of Bounds (Critical)
这是我的代码。
这是我得到的错误。
Buffer Overflow - Array Index Out of Bounds (Critical)
> - Code: ABV.MEMBER --> i_rgb_to_xyz()
> - Message: Array '&(xyz.x)' of size 1 may use index value(s) 2.
// Go through all input rgb's and push result to output vector
for (auto pt : rgb)
{
point_xyz xyz;
matrix_mul3x1(M, &pt.r, &(xyz.x)); //this line is the error line
output.push_back(xyz);
}
void matrix_mul3x1(const double* A, const double* B, double* C)
{
C[0] = A[0] * B[0] + A[1] * B[1] + A[2] * B[2];
C[1] = A[3] * B[0] + A[4] * B[1] + A[5] * B[2];
C[2] = A[6] * B[0] + A[7] * B[1] + A[8] * B[2];
}
这是RGB的定义
const vector<point_rgb>& rgb
这是point_rgb的定义
typedef struct
{
double r;
double g;
double b;
} point_rgb;
这是对point_xyz的定义
typedef struct
{
double x;
double y;
double z;
} point_xyz;
有人可以建议如何解决此问题吗? 我真的不明白这个发条错误。
你需要改变matrix_mul3x1
的主体:
void matrix_mul3x1(const point_xyz* A, const point_rgb* B, double* C)
{
C[0] = A->x * B->r + A->y * B->g + A->z * B->b;
// ....
}
您不能访问将其视为数组的结构的成员。
在您的情况下,您也可以使用元组而不是结构。
using data = std::tuple<double, double, double>;
void matrix_mul3x1(const data& A, const data& B, data& C)
{
std::get<0>(C) = std::get<0>(A) * std::get<0>(B) ...;
// ....
}
相关文章:
- 缓冲区溢出 - 数组索引越界(严重)
- C++:成员的越界声明必须是纯虚函数的定义错误
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- mlpack :在 FFN 中索引越界<>
- 越界访问 CUDA 共享内存
- 访问矢量元素时索引越界异常
- 实时线程中的 ZeroMQ inproc PubSub send() 调用会导致严重的阻塞吗?
- C++不给出越界错误.有没有办法强制编译器检查而不是未定义的行为?
- 严重包含在字符串中,除非我将其存储在类C++
- 为什么我的实时流相机使用OpenCV QT严重滞后
- 未检测到越界指针算法?
- 我的 SDL2 应用程序仅在第一次键盘输入后出现严重延迟
- 分段错误:为什么这里的数组索引越界了
- 在 C++ 中更改越界指针的取消引用是否安全?
- 为什么简单的C++向量函数会产生越界的下标
- 特征:优化入口周围的越界矩阵块/切片
- 这不应该发出越界警告吗?
- 是什么导致了数组越界运行时错误?
- 自定义迭代器越界
- 矢量不是被保护不越界吗?