test* arr = (test*)malloc(10 * sizeof(test));
дальше циклом заполняем массив, но не совсем понимаю как корректно удалить экземпляр матрицы 'test' из этого массива, вижу только вариант с освобождением памяти в случаи хранения там указателя
Удаление из массива - это фактически сдвиг хвоста массива на один элемент.
Если это допустимо, можно схитрить - скопировать на место удаляемого последний элемент массива и обрезать массив.