I'm trying to create a 2D random integer matrix and while inserting a number I keep getting 'dereferencing NULL pointer' error which keeps crashing the program.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int** createMatrix(int, int);
void randomIntegerMatrix(int**, int, int);
void printMatrix(int**, int, int);
void freeMemory(int**, int, int);
int main()
{
const int cols = 10;
const int rows = 20;
int** matrix = createMatrix(rows, cols);
randomIntegerMatrix(matrix, rows, cols);
printMatrix(matrix, rows, cols);
freeMemory(matrix, rows, cols);
}
// generating array
int** createMatrix(int rows, int cols)
{
int** matrix = (int**)malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
matrix[i] = (int*)malloc(cols * sizeof(int));
}
return matrix;
}
// inserting elements to an array
void randomIntegerMatrix(int** matrix, int rows, int cols)
{
srand(time(NULL));
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
matrix[i][j] = rand() % 1000;
}
}
}
void printMatrix(int** matrix, int rows, int cols)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
void freeMemory(int** matrix, int rows, int cols)
{
for (int i = 0; i < rows; i++) {
free(matrix[i]);
}
free(matrix);
}
How do I fix it? //EDIT: Updated with everything pointed out in replies.A functioning code.