I see nowhere that (*pointer) is changed in this loop, so you are writing to the same address five times. You are continually overwriting the previous write, so only the last iteration has an effect, so the above is equivalent to the single line below.
(*pointer)->data = array;
In other words, what is the point of the loop if the value of (*pointer) does not change inside the loop?
I can't really make sense of the types of these variables. I'm assuming from the malloc statement that array is an array of matrixCov elements. I don't know what pointer is. Regardless of what it is, it seems like you would want something like this:
rather than this:
(*pointer)->data = array[k];
But again, I'd have to see the declarations since I don't no what type pointer is and what you're trying to do.