Вот ваш код, измененный так, что вызывающий абонент получит указатель на shm
:
shmPool shm;
void getMemory(void** mPtr){
*mPtr = &shm;
}
Вызывающая сторона будет вызывать эту функцию следующим образом:
shmPool* p;
getMemory(&p);
// now p is a valid pointer
Ваш вопрос не имеет ничего общего с выравниванием памяти. Однако в вашем коде есть проблемы, поэтому возьмите мой ответ с небольшим количеством соли:
- Почему вы приводите объект к
void*
? Это почти наверняка плохо.
- Я согласен с @ Björn Pollex, что в этом примере лучше использовать возвращаемое значение, а не выходной параметр.