Ajuda com alocação dinâmica em C

Fala pessoal, beleza?
Meu problema é o seguinte: Eu tenho vários arrays de chars no meu programa e gostaria de alocar eles em um outro array, mas um de cada vez. O que eu estou fazendo é o seguinte:

[code]// …
int *keynum;
char a[keynum];

//…

int main(){
char p1[11]=“computador”;

keynum = (int *) malloc( ((sizeof(p1)) * (sizeof(int)) );

//…[/code]

Aí o compilador fala que o tamanho do array a não tem integridade com o tipo 'int*'
Alguém sabe como eu posso solucionar isso?
Pesquisei no google sobre arrays com alocação dinâmica, mas ainda não entendi isso muito bem.

Vc tem 2 problemas

  1. o correto é
  1. o trecho

int *keynum; char a[keynum];

Não faz sentido. keynum deveria ser uma constante ou uma macro para vc poder compilar esse codigo.

ex:

const int xxx; char a[xxx];

Ops, falei besteira.