STLport c_str()返回值不正确

时间:2016-02-26 02:20:56

标签: c++ stl stlport

我遇到了 stlport STL实施的问题。我将它用于Android,虽然平台可能与此无关。 我正在使用第三方共享库,它试图打开某个文件。该文件路径传递给std::string,然后它来到库内联函数:

inline bool ReadProtoFromTextFile(const string& filename, Message* proto) {
  return ReadProtoFromTextFile(filename.c_str(), proto);
}

然后将该C字符串用作open()函数的参数。问题是,使用 stlport ReadProtoFromTextFile函数会收到无效的C字符串,从而无法打开文件。那个无效的C字符串是确定性的,它始终是这个字符序列:

  

P&安培;!\ xffffffe8

当我尝试从我的代码中调用c_str()时,它始终有效。 我试图用LLDB查看有问题的字符串并得到此错误: 错误:表达式无法准备在目标

中运行

仍然可以检查该字符串的内部结构,_M_buffers._M_end_of_storage字段中存在有问题的字符串序列。 _M_buffers._M_start_of_storage中也有正确的序列。

当我切换到 gnustl 实施时,问题就消失了。 LLDB显示.c_str()没有任何问题。对我来说,它看起来像一些内联问题,但它可能是什么?毕竟, stlport_shared 建议由Google实施。

0 个答案:

没有答案