> pSections[i] = (MyStruct **) calloc(1, sizeof(MyStruct *)*str[i]);
I believe this should be:
pSections[i] = calloc(1, sizeof(MyStruct)*str[i]);



> pSections[i][j] = ... // Some previously allocated MyStruct address allocated elsewhere using calloc(1, sizeof(MyStruct))
I assume to access, you use something like:
pSections[i][j]->nID = ...