Пишу программу для контроллера. Plain C. Простейшая работа с матрицами.
float** createMatrix(unsigned short int nrows, unsigned short int ncolumns)
{
float **matrix;
unsigned short int i;
matrix = malloc(nrows * sizeof(float *));
if (matrix == 0)
fprintf(stderr, "out of memory\n");
for (i = 0; i < nrows; i++)
{
matrix[i] = malloc(ncolumns * sizeof(float));
if (matrix[i] == 0)
fprintf(stderr, "out of memory\n");
}
return matrix;
}
void destroyMatrix(float** matrix,unsigned short int rows)
{
unsigned short int i = 0;
for (i = 0; i < rows; i++)
free(matrix[i]);
free(matrix);
}
float** subMatrix(float** m1,float** m2, unsigned short int nrows, unsigned short int ncolumns)
{
float **resultMatrix;
unsigned short int i,j = 0;
resultMatrix = createMatrix(nrows,ncolumns);
for (i = 0; i < nrows; i++)
for (j = 0; j < ncolumns; j++)
resultMatrix[i][j] = m1[i][j]+(-1*m2[i][j]);
return resultMatrix;
}
Код работает, никаких проблем. Однако, при прогонке valgrind'ом выдается:
«Invalid read of size 4» Что бы это могло значить?