2013-07-23 3 views

ответ

1

ниже пример показывает переполнение, так как в цикле каждый раз, когда она идет по нарастающей, что означает, что он выходит за пределы буферной памяти, thts, почему он показывает переполнение.

int count = 2147483647; 
NSString *str = @""; 
for (int i = 0; i < count; i++) { 
    @try { 
     str = [str stringByAppendingString:@"\n"];//NSString stringWithFormat:@"%@%@", str , @"\n" 
    } 
    @catch (NSException *exceptions) { 
     NSLog(@"end after %d loops (%@)", i, [exceptions description]); 
    } 
} 

see this link to more

+0

Насколько велика ли ваша строка получить? Я работал с NSStrings размером до 13 ГБ без каких-либо проблем. –

+2

stringByAppendingString возвращает строку с автореализацией, поэтому на самом деле она использует больше памяти (примерно на i^2/2 больше), чем текущая длина str, потому что все созданные строки не будут выпущены до окончания runloop. – cncool

Смежные вопросы