Why does this produce a segmentation fault?
int instruction_count = 0;
char buffer[MAXLINE + 1];
strcpy(buffer, line);
curr_token = strtok(NULL, delimiter);
while (curr_token != NULL) {
    instruction_count++;
    curr_token = strtok(NULL, delimiter);
}
// char* arg_array = malloc(sizeof(char*)*(instruction_count + 1));
char* arg_array[instruction_count + 1];
if (arg_array == NULL) {
    perror("malloc");
    exit(1);
}
char* new_curr_token = strtok(buffer, delimiter);
new_curr_token = strtok(NULL, delimiter);
int j = 0;
while (new_curr_token != NULL) {
    sleep(5);
    arg_array[j] = malloc(sizeof(char) * (strlen(new_curr_token) + 1));
    if (arg_array[j] == NULL) {
        perror("malloc");
        exit(1);
    }
    printf(" current intruction: %s", new_curr_token);
    sleep(5);
    strcpy(arg_array[j], new_curr_token);
    new_curr_token = strtok(NULL, delimiter);
    j++;
}