How is a declared in the first place?

If you're starting with
unsigned int **a = malloc( nRows * sizeof(*a));

Where each row is
a[i] = malloc( nCols * sizeof(*a[i]));


To remove a row, it's simply
free(a[i]);
for (j = i+1; j < nRows ; j++) a[j-1] = a[j];


After that, you can use realloc to make a itself shorter, and decrement nRows.

> //vr is number or rows
So change the variable to be something actually readable, then you don't need meaningless comments.