標籤:cocos2d-x 記憶體溢出 apk 解決方案 android
流程重現:
使用coco2d-x製作了一個2048,在xcode模擬器運行以及在pad上真機調試都是沒有問題的,但是在使用eclipse調試打包android能夠運行,但是進入遊戲之後會在隨機的地方閃退,debug模式報錯為:
10-20 11:48:36.413: A/libc(17408): Fatal signal 11 (SIGSEGV) at 0x68d7b0b8 (code=2), thread 17426 (Thread-7958)
在網上查到關於這個問題的n中說法,包括android版本錯誤等等,最後發現問題是賦值字串導致的記憶體溢出,之所以在ios上運行沒有問題是因為ios分配的記憶體比android要大,
錯誤碼如下:
.hint select;std::string ss;.c std::string ss="平淡無奇"; auto Select2=Label::createWithSystemFont(StringUtils::format("%s",ss.c_str()), "", 30); this->addChild(Select2); Select2->setTag(220);this->select=random()%6; CCLOG("s=%d",select); switch (this->select) { case 0: ss="平淡無奇"; break; case 1: ss="左右逢源"; break; case 2: ss="上天入地"; break; case 3: ss="烽煙四起"; break; case 4: ss="莊周夢蝶"; break; case 5: ss="紅塵往事"; break; default: break; } auto lb=(Label *)this->getChildByTag(220); lb->setString(ss);
解決方案設定字元數組
代碼
.hint select;std::string ss; char* selectstr[6]= {"平淡無奇","左右逢源","上天入地","烽煙四起","莊周夢蝶","紅塵往事"};.c std::string ss="平淡無奇"; auto Select2=Label::createWithSystemFont(StringUtils::format("%s",ss.c_str()), "", 30); this->addChild(Select2); Select2->setTag(220);this->select=random()%6; auto lb=(Label *)this->getChildByTag(220); lb->setString(selectstr[select]);
由此可見字串的賦值不能採用常規的“=”否則回引起記憶體溢出問題。
[cocos2d-x][apk打包][Fatal signal 11][andriod]Eclipse編譯Fatal signal 11報錯-都是字元賦值惹的禍