变量初始化的重要性
背景:在Jni代码中,写了个矩阵乘法的函数
代码
void
matrixMM4 (float* left, float* right)
{
float* tmp = (float*) malloc (sizeof(float) * 16);
memset (tmp, 0, sizeof(float) * 16);
typedef float (*DyadicArray)[4]; //二维数组类型定义
DyadicArray dLeft = (DyadicArray) left; //这样强转后,对释放是否有影响.
DyadicArray dRight = (DyadicArray) right;
DyadicArray dTmp = (DyadicArray) tmp;
int i, j, len;
for (i = 0; i < 4; ++i)
{
for (j = 0; j < 4; ++j)
{
float t;
t = 0.0f;//<--当未赋予初始值0,结果乱七八糟,极其重要-->
for (len = 0; len < 4; ++len)
{
t += (dLeft[i][len] * dRight[len][j]);
}
dTmp[i][j] = t;
}
}
memcpy (left, dTmp, 16 * sizeof(float));
free (tmp);
}