这是我的代码。
这是我得到的错误。
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;
有人可以建议如何解决这个问题吗?我真的不明白这个发条错误。