Identify the form of storage for each of the variables in the following program. When is the storage created? Freed?
#include <stdlib.h>
int n = 7;
int foo(int);

int main() {
  int *k;
  n = 5;
  foo(n);
  k = (int *) malloc(sizeof(k));
  *k = 3
  free(k)
  return 0;
}

char s[] = "this is a test";

int foo(int i) {
  int j = i - 1;
  n = n+1;
  if (j <= 0) return 0;
  else return foo(j);
}