C - разделяемая память - динамический массив внутри разделяемой структуры

я пытаюсь поделиться такой структурой
пример:

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

между процессами проблема заключается в том, что когда я инициализирую 'a' с помощью malloc, он становится приватным для кучи процесса, который делает это (или, по крайней мере, я думаю, что именно это и происходит). Есть ли способ создать разделяемую память (с shmget, shmat) с этой структурой, которая работает?

РЕДАКТИРОВАТЬ: я работаю на Linux.
РЕДАКТИРОВАТЬ: у меня есть процесс, который инициализирует буфер следующим образом:

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);

другой процесс присоединяется к общей памяти следующим образом:

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

и позже получить элемент из, в этом случае, что в положении 1

int i = get_el(e, 1);

Ответы на вопрос(5)

Ваш ответ на вопрос