int *return_lva(void)
{
int x;
return &x;
}
#include <stdio.h>
int main(void)
{
int *xp = return_lva();
printf("xp = %p\n", xp);
}
gcc
(9.4.0) warns (at least) about this, even without -Wall
:
$ gcc lva.c
lva.c: In function ‘return_lva’:
lva.c:5:12: warning: function returns address of local variable [-Wreturn-local-addr]
5 | return &x;
| ^~