#include /* ./a.out && echo $? */ int main(void) { char **A; int i; A = (char **)malloc(10 * sizeof(char *)); if(!A) return 1; for(i = 0; i < 10; i++){ *(A + i) = (char *) malloc(10); if(!*(A + i)) return 2; } /******/ A = (char **)realloc(A, 15 * sizeof(char *)); if(!A) return 3; for(i = 10; i < 15; i++){ *(A + i) = (char *) malloc(10); if(!*(A + i)) return 4; } /******/ for (i = 0; i < 15; i++) free(*(A + i)); free(A); return 123; /* everything ok */ }