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).