Trying to understand memory allocation in C. Facing issue while trying to create two arrays using pointer to integers. Kindly have a look at the below code:
#include <stdio.h>
#include <stdlib.h>
int main() {
    int *a;
    int *b;
    for (int i = 0; i<4;i++)
    {
        printf("Enter value \n");
        a[i]=(int *)malloc(sizeof(int));
        b[i]=(int *)malloc(sizeof(int));
        scanf("%d",&a[i]);
        scanf("%d",&b[i]);
    }
    for (int i =0;i<4;i++)
    {
      printf("%d = %x\n  ",a[i],&a[i]);
    }
    for (int i =0;i<4;i++)
    {
     printf("%d = %x\n  ",b[i],&b[i]);
    }
    return 0;
}
I am working with C11 on CLion. Facing below error on runtime. Can someone please explain what is wrong with this code ?
Enter value 
Process finished with exit code 11
"b is being shown NULL during debugging"
UPDATE: Tried on another IDE, where "a" itself is not being allocated any memory. It directly gives me segmentation fault.
UPDATE 2: Changing:
int *a;
int *b;
to
int *a = NULL;
int *b = NULL;
at least stops how this code is behaving. It gives me segmentation fault as soon as I try to allocate memory to a[i] (Which is wrong, now I get).

 
     
     
    