Why does my code put out a segfault when I try to print POI2POI[CNT2][CNT3]? Is there anything wrong with my allocation?Code:#include <stdio.h> #include <stdlib.h> // John Raphael B. Pascua 2015-13687 int main(void){ char *POI = (char*)calloc(1 , sizeof(char)); char **POI2POI = (char**)calloc(1, sizeof(char)); char test='a'; int CNT=0,CNT2=1,CNT3=0; do{ test = getchar(); if(test != EOF){ CNT2++; POI=realloc(POI,sizeof(char)*CNT2); *(POI+CNT) = test; CNT++; } }while(test != EOF); for(CNT=1,CNT2=0,CNT3=0;POI[CNT] != '"';CNT++){ if(POI[CNT] != '"' && POI[CNT] != 10 && POI[CNT] != ' '){ POI2POI[CNT2] = calloc(1,sizeof(char)); POI2POI[CNT2][CNT3] = POI[CNT]; CNT++; CNT3++; while(POI[CNT] != ' ' || POI[CNT] != 10 || POI[CNT] != ','){ POI2POI[CNT2] = realloc(POI2POI[CNT2],sizeof(char)*CNT3+1); POI2POI[CNT2][CNT3]=POI[CNT]; CNT++; CNT3++; } }if(POI[CNT] != ','){ POI2POI[CNT][CNT3]=0; CNT3=0; CNT2++; POI2POI = realloc(POI2POI, sizeof(char*)*(CNT2+1)); } } for(CNT3=0;CNT3<CNT2;CNT3++){ free(POI2POI[CNT3]); } free(POI2POI); free(POI); return 0; }