повысить межпроцессный режим:общая память и типы stl
-
13-09-2019 - |
Вопрос
У меня есть простая структура:
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;
}
Не связан с StackOverflow