我分配内存错了吗?

时间:2015-04-08 21:17:14

标签: c malloc allocation calloc

我不确定我做错了什么,但有些Rtable [0,7]从0到2收费没有在哪里,我认为这是一个分配问题,但我不认为我在分配这是错的,但问题是我实际上错误地分配了内存吗?

int *Rtable;
Rtable = (int *) malloc(sern * (2*sern) * sizeof(int));
initialize(sern, Rtable);

and my initialize method is:

void initialize(int sern, int *Rtable){
    int row, column;
    for(row = 0; row < sern; row++){
        for(column = 0; column < sern; column++){
            Rtable[row*sern + 2*column] = (row == column) ? 0 : 1000;
            Rtable[row*sern + (2*column) + 1] = (row == column) ?  row+1 : 0;
            printf("row: %d, and column: %d, data: %d\n",row, 2*column, Rtable[row*sern +2*column]);
            printf("row: %d, and column: %d, data: %d\n",row, 2*column+1, Rtable[row*sern +2*column+1]);
            //Rtable[row][2*column] = (row == column) ? 0 : 1000;
            //Rtable[row][(2*column)+1] = (row == column) ?  row+1 : 0;
        }
    }
    int i, k;
    for(i = 0; i < sern; i++){
        printf("data[%d] is : ", i);
        for(k = 0; k < (2*sern); k++)
            printf("%d:%d, ",k,Rtable[i*sern + k]);
        printf("\n");
    }
}

1 个答案:

答案 0 :(得分:1)

列数实际上是2*sern。因此,Rtable[row*sern + 2*column]表达式应为Rtable[row*(2*sern) + 2*column]