#include <stdio.h>

int main() {
  printf("Hello world!\n");

  int* pI = (int*)malloc(sizeof(int));
  int j;
  printf("Now reading uninitialized memory\n");
  j = *pI+2;
  printf("Did you notice? (value was %i)\n",j);
  free(pI);
  printf("(No memory leak here)\n");

  int* pJ;
  printf("Now writing to uninitialized pointer\n");
  *pJ = j;
  printf("Did you notice?\n");

  // valgrind reports 8, but that's ok
  printf("There should be 2 errors in this run\n");
  return 0;

}