Well no, you keep track of the array size and grow it when it's too small when doing a push.
i.e. HeapReAlloc http://msdn2.microsoft.com/en-us/library/aa366704(VS.85).aspx
You may optimize that if you allocate space for 2 or so matrices at once, as it decreases the number of HeapReAlloc calls. However, for a basic implementation this isn't relevant, yet.