function start() { char** fields; fields = (char**)malloc(9 * sizeof(char*)); fill(fields); free(fields); // PROBLEM: if i do: fprintf(stderr, "fields[0] = %s", fields[0]); then program crashes.. why?? } function fill(char** fields) { char buf[1024]; int i; char* strtok_ptr = NULL; i = 0; snprintf(buf, sizeof(buf), "these:are:tokens"); strtok_ptr = strtok(buf, ":"); fields_ret[i++] = strtok_ptr; while( strtok_ptr != NULL ) { if( (strtok_ptr = strtok(NULL, ":")) != NULL ) { fields[i++] = strtok_ptr; } } }