Как я могу выделить общую память для класса с типом string и типом векторных элементов - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть класс, как показано ниже

class client_info{
    public:
        bool exist = false;
        int ID;
        std::string name;
        std::vector<int> record;
};

И я хочу выделить общую память для массива client_info (30 элементов) для взаимодействия между процессами.

Однако,поскольку некоторые элементы clinet_info имеют тип std::string или std::vector.Размер client_info изменится при запуске программы.sizeof(client_info) похоже не может получить правильный размер памяти client_info.

Как я могу определить аргумент размера в int shmget(key_t key, size_t size, int shmflg); Или есть какой-то альтернативный способ объявить блок разделяемой памяти.Для удобства я не хочу использовать PIPE или FIFO.

1 Ответ

0 голосов
/ 18 ноября 2018

Задав этот вопрос, я получаю очень похожий вопрос: возможно ли поместить std :: vector в общую память?

Кажется, вы никогда не должны помещать динамические инструкции в общую память. Попробуйте реализовать инструкцию со статическим размером, если вы действительно хотите использовать разделяемую память.

...