Everything you allocate through any C function (not API) is virtual. It is only limited by the amount of virtual memory (we are talking about high-level OSes like Linux, Windows, Mac here).
Virtual memory is limited to a number of OS factors.