I should've explained that I'm not talking about a physical implementation, but about the theoretical bounds of the C abstract machine.
> size_t can store the maximum size of a theoretically possible object of any type (including array).
In a proper theoretical turing machine, size_t would allow you to create and address arbitrarily large arrays too.
For any give C implementation, it is thus trivial to theoretically solve the halting problem (assuming no stdio.h stuff is used).
So, I don't think it having to be a constant is a problem as much as having to deal with infinitely big numbers inside of infinite memory (which may or may not be a contradiction, depending on axioms used to define a turing machine. I still need to work my way through annotated turing).
Of course, things do get a lot simpler and grounded using IO functions like you said earlier.
As far as I'm aware, there isn't an instance of an infinitely large integer, even in mathematics, there are finite integers and there is the concept of infinity. (And size_t is defined as an unsigned integer type)
I don't see how such numbers can exit/be used/defined in any meaningful way. Do you have an example of such a number?