size_t
гарантированно может содержать размер в байтах любого объекта, который вы можете выделить в памяти.Обычно это означает, что он имеет тот же размер, что и указатель, который, в свою очередь, обычно равен размеру регистра ЦП.
Передача по ссылке не помогает;указатель почти наверняка равен по крайней мере размера size_t (если нет, то size_t можно было бы уменьшить без проблем).И в любом случае, большинство 64-битных ABI в любом случае передают целочисленные аргументы в 64-битных регистрах, поэтому разницы в размере стека нет.