Android应用程序在c++; 我使用Android NDK使用C++库。在C++库中有一个方法,它有很多字符串附加操作。所以在我的代码中,我只声明了一个字符串对象,然后对它执行几个附加操作。在C++库中,方法被调用过多。我的android应用程序在方法上是crashin。CPU使用率太高。我的问题是为什么会发生这种情况?使用stdreserve操作好吗

Android应用程序在c++; 我使用Android NDK使用C++库。在C++库中有一个方法,它有很多字符串附加操作。所以在我的代码中,我只声明了一个字符串对象,然后对它执行几个附加操作。在C++库中,方法被调用过多。我的android应用程序在方法上是crashin。CPU使用率太高。我的问题是为什么会发生这种情况?使用stdreserve操作好吗,android,c++,android-ndk,Android,C++,Android Ndk,用法示例: std::string GetString() const { std::string str1; str1 = "something"; str1 += "somestring"; if(...) { str1 += "somestring"; str1 += "somestring"; } str1 += "somestring"; str1 += "somestring"; str1 += "somestring"; str1 +

用法示例:

std::string GetString() const 
{ 
  std::string str1; 
  str1 = "something"; 
  str1 += "somestring"; 
  if(...) { str1 += "somestring"; str1 += "somestring"; }
  str1 += "somestring"; 
  str1 += "somestring"; 
  str1 += "somestring"; 
  str1 += "somestring"; 
  str1 += "somestring"; s
  str1 += "somestring"; 
  return str1; 
}

此方法调用C++ 50次或多次。


我还要提一件事。我收到以下碰撞报告信号11(SIGSEGV),代码1(SEGV_MAPERR),故障地址00000010。这可能是一个信号错误。

是的,对于这种用法,调用.reserve()绝对是一个好主意,它可以节省许多重新分配的时间,因此运行速度更快,内存碎片更少


虽然我看不到导致崩溃的其他可能原因,但可用内存不足。

问题可能不是源于
std
方法或库,而是源于您的特定使用。你能提供一个测试用例吗?std string GetString()常量{std string str1;str1=“somestring”;如果(…){str1+=“somestring”;str1+=“somestring”;}str1+=“somestring”;str1+=“somestring”;str1+=“somestring”;str1+=“somestring”;str1+=“somestring”;返回str1;}这个方法从C++ LIB调用50次或更多次,看起来不错。我想问题在于你没有向我们展示的代码。还有一件事我应该提到。我收到以下碰撞报告
信号11(SIGSEGV),代码1(SEGV\u MAPERR),故障地址00000010
。这可能是信号故障。