0

我正在使用使用 android ndk 的 C++ 库。在 c++ 库中,有一个方法有很多字符串追加操作。所以在我的代码中我只是声明一个字符串对象,然后对其进行几个附加操作。在 c++ 库中,该方法被调用太多。我的 android 应用程序在方法中崩溃了。CPU 使用率过高。我的问题是为什么会这样?reserve使用 std操作是个好主意吗?

示例用法:

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++ lib 调用了 50 次或更多次。我还要提一件事。我收到以下崩溃报告信号 11 (SIGSEGV)、代码 1 (SEGV_MAPERR)、故障地址 00000010。可能这是一个 sigmentation 故障。

4

1 回答 1

1

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

尽管除了可用内存不足之外,我认为没有其他可能的崩溃原因。

于 2013-06-06T11:17:26.110 回答