Да. Конечно, это ограничено адресным пространством вашей системы. Он также ограничен объемом пространства, выделенного для стека вашей ОС, который обычно не может быть изменен после запуска вашей программы, но может быть изменен заранее (либо процессом запуска, либо свойствами исполняемого файла). На мой взгляд, максимальный размер стека в моей системе OS X составляет 8 МБ, а в Linux - 10 МБ. В некоторых системах вы можете даже выделить разное количество стека для каждого запускаемого вами потока, хотя это имеет ограниченную полезность. У большинства компиляторов также есть другое ограничение на количество, которое они допускают в одном кадре стека.
На современном настольном компьютере я бы не беспокоился о выделении стека в 1 Кб, если бы функция не была рекурсивной. Если вы пишете встроенный код или код для использования внутри ядра ОС, это будет проблемой. Код в ядре Linux допускается только стеками 64 КБ или меньше, в зависимости от параметров конфигурации.