повысить межпроцессный режим:общая память и типы stl

StackOverflow https://stackoverflow.com/questions/1272073

Вопрос

У меня есть простая структура:

struct MyType
{
    std::string name;
    std::string description;
}

и я помещаю это в общую память:

managed_shared_memory sharedMemory(open_or_create, "name", 65535);
MyType* pType = sharedMemory.construct<MyType>("myType")();
// ... setting pType members ...

Если два приложения, взаимодействующие с общей памятью, созданы с использованием разных версий Visual Studio (разная версия реализации stl), следует ли мне помещать собственные типы в общую память (например,char*) вместо типов stl?

Редактировать :

Я попробовал с

typedef boost::interprocess::basic_string<char> shared_string;

и это работает!

Это было полезно?

Решение

Boost.Interprocess часто предлагает замену типов STL для использования в общей памяти.std::string, особенно когда это просто член структуры, не будет доступен из другого процесса.У других людей тоже было такая проблема.

Другие советы

Вы должны использовать

typedef boost::interprocess::basic_string<char> shared_string;
struct MyType
{
    shared_string name;
    shared_string description;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top