#include <stdio.h>
#include <stdlib.h>
int *alloc_int_array(void) 
{
    // 1) Dangling pointer!
    // int a[10];
    // return a;
 
    // 2) Allocating an array on the heap
    int *p = malloc(sizeof(int) * 10);
    return p;
}
void f(int *p, int x)
{
    *(p + 5) = x;
}
int main()
{
    int *p = alloc_int_array();
    f(p, 500);
    printf("%d\n", p[5]);
    p = NULL;  // memory leak!
    p = alloc_int_array();
    f(p, 501);
    printf("%d\n", p[5]);
    free(p);
}