Assigning memory to double pointer?
I am having trouble understanding how to assign memory to a double pointer. I want to read an array of strings and store it. char **ptr; fp = fopen("file.txt","r"); ptr = (char**)malloc(sizeof(char*)*50); for(int i=0; i<20; i++) { ptr[i] = (char*)malloc(sizeof(char)*50); fgets(ptr[i],50,fp); } instead of this I just assign a large block of memory and store the string char **ptr; ptr = (char**)malloc(sizeof(char)*50*50); would that be wrong? And if so why is it? Your second example is wrong because each memory location conceptually would not hold a char* but rather a char . If you slightly