Unknown error in the memory in C

Posted by Sergey Gavruk on Stack Overflow See other posts from Stack Overflow or by Sergey Gavruk
Published on 2010-03-22T17:12:33Z Indexed on 2010/03/22 17:41 UTC
Read the original article Hit count: 384

Filed under:
|
|
|

I have a 2D dynamic array. I enter a line of 0's after line which has a biggest number:

void InsertZero(int **a, int pos){
    int i, j;
    a = (int**)realloc(a, n * sizeof(*a));
    a[n-1] = (int*)calloc(n, sizeof(**a));
    d = 0;
    for(i = n-1; i > pos; i--){
        for(j = 0; j < n; j++){
            a[i][j] = a[i-1][j];
            printf("%d ", a[i][j]);
        }
    }

    for(i = 0; i < n; i++){
        a[pos][i] = 0;
    }
}

If i make a size of array 3, 5, 7, 9, ... it works correctly. But if a number of lines is 2, 4, 6, ... , it is an access violation error, when i try to print my array:

void Print(void){
    int i, j;
    for(i = 0; i < (n-d); i++){
        for(j = 0; j < n; j++){
            printf("%d\t", arr[i][j]);
        }
        printf("\n");
    }
}

code: http://codepad.org/JcUis6W4

© Stack Overflow or respective owner

Related posts about c

    Related posts about arrays