I am using Google protobuf in an embedded application with limited heap memory. I am currently trying to make the application to use dynamic allocation only as a last resort. For this, I have some shared buffer on which I create all the proto messages or most of them. Everything seems to be Ok, except for the cases where the proto message expects a ::std::string
parameter.
The way I understand the ::std::string
constructors description, is that it will create a copy of the data I supply. For example this constructor:
s = new(sharedBufferAddress) ::std::string(mApn, mApnSize);
where
char mApn[APN_MAX_SIZE];
int8_t mApnSize;
will create an object located at the sharedBufferAddress, but the data inside will be copied on a buffer assigned on the heap.
The question is whether there is some way to have the pointer that is returned by the c_str()
function to some specified address.