我在一个内存有限的嵌入式应用程序中使用Google protobuf。我目前正在尝试使应用程序仅在必要时使用动态分配。为此,我有一些共享缓冲区,在其中创建所有proto消息或大部分消息。除了proto消息需要一个
据我所知,
在哪里?
::std::string
参数的情况外,一切似乎都很正常。据我所知,
::std::string
构造函数的描述方式是它将创建我提供数据的副本。例如,这个构造函数:s = new(sharedBufferAddress) ::std::string(mApn, mApnSize);
在哪里?
char mApn[APN_MAX_SIZE];
int8_t mApnSize;
将在共享缓冲区地址创建一个对象,但其中的数据将被复制到分配在堆上的缓冲区中。
问题是是否有一些方法可以将由c_str()
函数返回的指针指向特定的地址。
explicit basic_string( const Allocator& alloc );
- Gem Taylorstd::string
是std::basic_string<char, std::char_traits<char>, std::allocator<char>>
的别名。编写自定义的std::allocator<char>>
特化是未定义行为。因此,这里提到的方法似乎实际上并不合法。 - Öö Tiib