Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int i, j;
int lines, columns;
int *matrix1, *matrix2;
printf("lines: ");
scanf("%d", &lines);
printf("columns: ");
scanf("%d", &columns);
matrix1 = malloc(lines * columns);
/*matrix2 = malloc(lines * columns);*/
printf("\nvalues for matrix1\n");
for (i = 0; i < lines; i++)
for (j = 0; j < columns; j++) {
printf("matrix1[%d][%d]: ", i, j);
scanf("%d", &matrix1[i * columns + j]);
}
memcpy(matrix2, matrix1, sizeof(matrix1));
for (i = 0; i < lines; i++)
for (j = 0; j < columns; j++)
printf("matrix2[%d][%d] = %d\n", i, j, matrix2[i * columns + j]);
free(matrix1);
free(matrix2);
return 0;
}
When I run this program, this is what happens...
Code:
lines: 3
columns: 3
values for matrix1
matrix1[0][0]: 1
matrix1[0][1]: 2
matrix1[0][2]: 3
matrix1[1][0]: 4
matrix1[1][1]: 5
matrix1[1][2]: 6
matrix1[2][0]: 7
matrix1[2][1]: 8
matrix1[2][2]: 9
matrix2[0][0] = 1
matrix2[0][1] = 1073834432
matrix2[0][2] = 1073783856
matrix2[1][0] = 1074016346
matrix2[1][1] = 1074016362
matrix2[1][2] = 1074016378
matrix2[2][0] = 1074016394
matrix2[2][1] = 1074265552
matrix2[2][2] = 1074016426
*** glibc detected *** free(): invalid next size (fast): 0x080498b8 ***
Aborted
What is going on here? Thanks.