What do you want it to do if you ask for a covering with N cells, but it takes M > N cells to cover the region at the level you requested?
What are you doing with the cells in the covering? Maybe try to rewrite that to not require a fixed level.
What I was suggesting before is to do something like
S2CellUnion covering = coverer.GetCovering(...); // don't use fixed level here
vector<S2CellId> cell_ids;
covering.Denormalize(fixed_level, /*level_mod=*/1, &cell_ids);
But, as I said before, you may be fundamentally destined to run out of memory depending on your region and level.