Что происходит, когда переменная выходит из области видимости?
В большинстве управляемых языков (т. Е. С GC) локальные переменные, выходящие за рамки видимости, недоступны и имеют более высокий приоритет GC (следовательно, они 'Я буду освобожден первым).
Теперь, C не является управляемым языком, что происходит с переменными, которые выходят за рамки этой области?
Я создал небольшой тест-кейс в C: I '
#include
int main(void){
int *ptr;
{
// New scope
int tmp = 17;
ptr = &tmp; // Just to see if the memory is cleared
}
//printf("tmp = %d", tmp); // Compile-time error (as expected)
printf("ptr = %d\n", *ptr);
return 0;
}
м, используя GCC 4.7.3 для компиляции, и программа выше печатает17
, Зачем? И когда / при каких обстоятельствах будут освобождены локальные переменные?