Я пытаюсь использовать зажигалку примитивный массив, потому что хранить сотни тысяч NSNumbers в NSMutableDictionary вызывает как потребление памяти 40-50MB ..Correct примитивный массив размера
Это мой код:
NSUInteger highestModelID = [self.externalDB intForQuery:@"SELECT `id` FROM `models` ORDER BY `id` DESC"];
CGFloat modelsPricesForCustomer[highestModelID];
memset(modelsPricesForCustomer, 0, highestModelID*sizeof(NSUInteger));
NSLog(@"%i", highestModelID);
NSLog(@"%lu", (sizeof modelsPricesForCustomer));
highestModelID
34078
, но размер говорит, что это 136312
. Разве я неправильно его расписываю или неправильно читаю?
Да, я заметил, что написал «memset» неправильно; это действительно должно быть 'sizeof (CGFloat)'. Я также должен, вероятно, сделать '(maximumModelID + 1) * sizeof (CGFloat)', поэтому я могу фактически установить окончательный идентификатор в его диапазоне. Спасибо за подсказку :). Я приму ответ, когда закончится время. –
@Allendar Не используйте символ '+ 1' в' memset'. Если вы это сделаете, вы перепишете память за пределы массива. Плохо. – rmaddy
@dasblinkenlight Спасибо за подсказку! Я изменил его. Могу ли я на самом деле установить 'CGFloat modelsPricesForCustomer [mostModelID]' каким-то образом как '@ property' или использовать' static' для решения этой проблемы? Проблема в том, что 'highModelID' известен только после выполнения запроса. 'CGFloat modelsPricesForCustomer []' явно не сработает. –