Let's say I have a function that sets a number of local variables like this:

Code:
void test_func(){

	long a = 1; //4 bytes
	long b = 2; //4 bytes
	long c = 3; //4 bytes
	long d = 4; //4 bytes

	char text[] = "Hello, this is some text!"; //26 bytes
	
	//Total memory usage: 42 bytes
}
Will the memory used by the function always be freed once it ends? Are there any circumstances under which the memory wouldn't be freed upon exit?