Добрый вечер. Интересует следующий вопрос: Если в самом конце функции я запускаю другую функцию, то первая ждёт её завершения? Или запустив функцию завершает свою работу?
void foo1(){
	// - тело подпрграммы foo1
	foo2();
}
void foo2(){
	// - тело подпрограммы foo2
	foo1();
}
int main(){
	foo1();
	
	return 0;
}

Например у меня есть функция 
menu() (текстовый интерфейс), и из неё я запускаю подменю, а потом, что бы вернуться в меню, я снова запускаю 
menu(). Это что в памяти запущенно 2 функции 
menu? или одна?