程序有时会崩溃而其他时间则不会

时间:2016-10-13 22:27:27

标签: c matrix malloc free

我正在尝试制作一个程序,生成两个相同行数和列数的矩阵(由用户给出。矩阵上的数字也会生成),然后另一个矩阵填充用户给出的数字。

例如,如果我要求包含3行和3列的矩阵,程序有时可以正常工作,有时却没有。在任何一种方式中,程序总是在最后崩溃。我试过调试,但没有任何线索。可能是编译器?这就是我所拥有的:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int index, i, j, random, k, l;
    srand(time(NULL));
    printf("How many colums/lines?\n");
    scanf("%d", &index);
    int(*matrix1)[index]=malloc(sizeof(int[index][index]));
    if(matrix1 == NULL)
    {
        printf("Error\n");
    }

    for(i=1; i<=index; i++)
    {
        for(j=1; j<=index; j++)
        {
            random = rand()%10;
            matrix1[i][j]=random;
            printf("%d ", matrix1[i][j]);
        }
        printf("\n");

    }
    printf("\n\n");


    int(*matrix2)[index]=malloc(sizeof(int[index][index]));
    if(matrix2 == NULL)
    {
        printf("Error\n");
    }

    for(k=1; k<=index; k++)
    {
        for(l=1; l<=index; l++)
        {
            random = rand()%10;
            matrix2[k][l]=random;
            printf("%d ", matrix2[k][l]);
        }
        printf("\n");

    }

    int(*matrix3)[index]=malloc(sizeof(int[index][index]));

    printf("Input the numbers for the third matrix.\n");
    for(i=1; i<=index; i++)
    {
        for(j=1; j<=index; j++)
        {
            printf("Fill the position %d%d\n", i, j);
            scanf("%d", &matrix3[i][j]);
        }
    }

    free(matrix1);
    free(matrix2);
    free(matrix3);
    return 0;

0 个答案:

没有答案