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
。这可能是信号故障。