0

iPhoneのxcodeでこのコードを使用すると、割り当てが発生します

リージョン エラー。(シミュレーター使用)

NSString* str =@"Sommetext";
for (int i =1; i < 50 ; i++) {

    str =  [[[str stringByAppendingString:@"\n"] 

    stringByAppendingString:str] stringByAppendingString:@""];

    NSLog([NSString stringWithFormat:@"%d",i]);

}

ログを監視すると、1 から 26 までの増加が示され、その後

次のエラーでクラッシュします。

Appname(239,0xac5c9a28) malloc: * mmap(size=805306368) に失敗しました (エラー コード = 12) *エラー: 領域を割り当てられません

ただし、私のAndroid(Samsung)で(Javaで)同じコードを実行しています

Galaxy S2)は1000回ループしても問題ありません。

更新 1:

GCD を使用してバックグラウンドでコードを実行すると同じエラーが返されるため、メイン スレッドの過負荷の問題ではありません。

更新 2:

正常に動作する Android Java コード

String MsgText = "Some text";

for(i = 0 ; i < amount; i++)
        {
            ////Works on amount < 10000
            //Tested on Galaxy S2 **1GB Ram**
            MsgText = MsgText + MsgText;
        }
4

2 に答える 2

0

上記のコードの場合、iPhone にはstrデータを保存するのに十分なメモリがないため、割り当てエラーが発生してクラッシュします。

ただし、Android は、CPU を使用する可能性のある別の archi を使用するため、Android では十分なメモリが不足していますが、iPhone では機能しません。

于 2013-09-20T10:45:04.943 に答える