Convertendo um std :: list para char * [size]

por alguma razão, não sei explicar, cada item na matriz de caracteres ... é igual ao último item adicionado a ele ... por exemplo, progArgs [0] a progArgs [size] contém o valor do último item.

Não consigo descobrir o que estou fazendo de errado pela minha vida. Alguma sugestão?

int count = 0;
char *progArgs[commandList.size()]

    for(list<string>::iterator t=commandList.begin(); t!=commandList.end(); t++)
    {
        char item[strlen((*t).c_str())]; //create character string
        strcpy(item, (*t).c_str()); //convert from const char to char
        progArgs[count] = item;
        count++;
    }

editar:

Obrigado por todas as respostas rápidas a todos ... Entendo o que você está falando

questionAnswers(6)

yourAnswerToTheQuestion