Hello guys,
It's been a while since I last time posted in this forum.
I have strange problem regarding matrix allocation. I was asked to write code that includes 2D array dynamic allocation. I write two version of matrix allocation.
Here is in my opinio relevant part of the code:
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int rows, cols;
int i, j;
/*int * mat1Blok;*/
int ** mat1;
printf("Enter number of rows: ");
scanf("%d", &rows);
printf("Enter number of columns: ");
scanf("%d", &cols);
/*memory allocation*/
/* mat1Blok = malloc(rows * cols * sizeof(int));
mat1 = malloc(rows * sizeof(int*));
for (i = 0; i < rows; ++i)
{
mat1[i] = &mat1Blok[i * cols];
}
*/
mat1 = malloc(cols * sizeof(int*));
for(i = 0; i < cols; i++)
{
mat1[i] = malloc(rows * sizeof(int));
}
printf("\nEnter elements row by row:\n");
for (i = 0; i < rows; i++)
for(j = 0; j < cols; j++)
scanf("%d",&mat1[i][j]);
/*
free (mat1);
free (mat1Blok);
*/
for (i = 0; i < cols; i++)
{
free (mat1[i]);
}
free (mat1);
system("PAUSE");
return 0;
}
I have tested both versions with Dev-Cpp on Windows platform and sent to my friend who discovered that if he uses version which is commented, everything is OK, but if he the use version as in the above code he gets segmentation fault when entering elements. He tested it in Linux. I don't have linux installed and i ask you to test this code and check if it will fail on linux machine. I don't see a reason for such behaviour and simply can't figure out what is wrong. He sad he got segmentation fault with rows = 3 and cols = 2.
Can you please check it?
Thanks