Я использую Google protobuf во встроенном приложении с ограниченной памятью кучи.В настоящее время я пытаюсь заставить приложение использовать динамическое размещение только в качестве крайней меры.Для этого у меня есть общий буфер, на котором я создаю все прототипные сообщения или большинство из них.Кажется, все в порядке, за исключением случаев, когда протокольное сообщение ожидает параметр ::std::string
.
В моем понимании описания конструкторов ::std::string
я создаю копию предоставленных мною данных.,Например, этот конструктор:
s = new(sharedBufferAddress) ::std::string(mApn, mApnSize);
, где
char mApn[APN_MAX_SIZE];
int8_t mApnSize;
создаст объект, расположенный по адресу sharedBufferAddress, но данные внутри будут скопированы в буфер, назначенный в куче.
Вопрос в том, существует ли какой-либо способ получить указатель, возвращаемый функцией c_str()
на некоторый указанный адрес.