I work with char ****pCourses
int Courses(char ****pCourses, int ****pGrades, int **pCount, int *count)
{
    char *buffer=NULL;
    char letter;
    int j=0, i;
    int size=20;
    int countCourse=0, sumCourses=0;
    buffer=(char *)malloc(size*sizeof(char));
    do
    {
        scanf("%c",&letter);
    }while(letter==32);
    while(letter!=10)
    {
        while(letter!=',')
        {
            //in case we need to expend the buffer
            if(j>size)
            {
                size*=2;
                buffer=(char *)realloc(buffer,size*sizeof(char));
            }
            buffer[j]=letter;
            j++;
            //The new letter from the name of course
            scanf("%c",&letter);
        }
        //The end of the name of course
        buffer[j]='\0';
        j=0;
        if(countCourse==0)
        {
            *pCount=(int *)realloc(*pCount, ((*count)+1)*sizeof(int));
            (*pCount)[*count]=1;
        }
        else
            (*pCount)[*count]++;
        //Add the course's name to the system
        *pCourses=(char ***)realloc(*pCourses, ((*count)+1)*sizeof(char ***));
        (*pCourses)[*count]=(char **)realloc((*pCourses)[*count],(countCourse+1)*sizeof(char *));
        ((*pCourses)[*count])[countCourse]=(char *)malloc(strlen(buffer)+1);
        strcpy(((*pCourses)[*count])[countCourse], buffer);
        countCourse++;
        scanf("%c",&letter);
    }
    free(buffer);
    return 0;
}
while running I get a problem because of the next line:
(*pCourses)[*count]=(char **)realloc((*pCourses)[*count],(countCourse+1)*sizeof(char *));
that leads me to this part (from dbgheap.c):
{
    while (nSize--)
    {
        if (*pb++ != bCheck)
        {
            return FALSE;
        }
    }
    return TRUE;
}
does someone know what it means or why does this happen?
 
    