C - memória compartilhada - matriz dinâmica dentro da estrutura compartilhada

Eu estou tentando compartilhar uma estrutura como esta
exemplo:

typedef struct {
    int* a;
    int b;
    int c;
} ex;

entre processos, o problema é que quando eu inicializo 'a' com um malloc, ele se torna privado para o heap do processo que faz isso (ou pelo menos eu acho que é isso que acontece). Existe alguma maneira de criar uma memória compartilhada (com shmget, shmat) com essa estrutura que funciona?

EDIT: Estou trabalhando no Linux.
EDIT: Eu tenho um processo que inicializa o buffer como este:

key_t key = ftok("gr", 'p');   
int mid = shmget(key, sizeof(ex), IPC_CREAT | 0666);    
ex* e = NULL;
status b_status = init(&e, 8); //init gives initial values to b c and allocate space for 'a' with a malloc
e = (ex*)shmat(mid, NULL, 0);

o outro processo se liga à memória compartilhada assim:

key_t key = ftok("gr", 'p');
int shmid = shmget(key, sizeof(ex), 0);
ex* e;
e = (ex*)shmat(shmid, NULL, 0);  

e depois obter um elemento de um, neste caso, que na posição 1

int i = get_el(e, 1);