int main() {
    int i = 0, ARRAY_SIZE = 500000;
    char **char_array;  
    
    char_array = (char **)malloc(ARRAY_SIZE * sizeof(char*));
    //physical memory used before loop = M KB
    for (i = 0; i < ARRAY_SIZE; i++) {
        char_array[i] = (char *)malloc(16 * sizeof(char));
    }
    //physical memory usage after loop = M+19532 KB 
    return 0;
}
I have the above piece of code. I don't understand where the 19532 KB of memory use is coming from. In my machine (64 bit), sizeof(char*) should be 8 bytes. For row initialization of an array, how is memory used? I'm a beginner in C, so any help would be appreciated.
 
     
     
    