I don't understand why when bar is called it writes to same stack location as "foo" for local variable?
Unsure why this does output
$ gcc -O 3 test.c -o mytest local foo is 10 local foo is 12
. Thanks
#include <stdio.h>
int foo(int initialize, int val)
{
    int local;
    if (initialize) {
        local = val;
    } else {
        printf("local foo is %d\n", local);
    }
}
int bar(int initialize, int val)
{
    int local;
    if (initialize) {
        local = val;
    } else {
        printf("local bar is %d\n", local);
    }
}
int main()
{
    foo(1, 10); //set to 10
    foo(0, 0); //print it
    bar(1, 12); //set to 12
    foo(0, 0); //print foo again
    return 0;
}
