Может ли вектор С++ типов, не являющихся указателями, вызывать утечку памяти в iOS?

Вот код:

@interface myClass {
  std::vector<float> myVector 
}
@end

По приборам течет. Вот трассировка стека:

1 libstdc++.6.dylib operator new(unsigned long)  
2 __gnu_cxx::new_allocator<float>::allocate(unsigned long, void const*)  
3 std::_Vector_base<float, std::allocator<float> >::_M_allocate(unsigned long)

Я предполагаю, что должен выделить вектор в куче, но я до сих пор не понимаю, почему это происходит. Также возможно, что я не могу правильно освободить класс.


person rahil627    schedule 03.06.2012    source источник


Ответы (1)


Проверьте, вызывается ли дело вашего класса. Кажется, это единственный способ вызвать утечку в этом случае. И только один вопрос: почему вы не используете нативные контейнеры Objective-C? Вам необходимо хранить свои числа с плавающей запятой в NSNumbers, но вы сможете использовать стандартную модель управления сохранением/освобождением памяти для всех ваших экземпляров.

person Morion    schedule 03.06.2012
comment
Я каким-то образом смог заставить класс освободить место (о, так много проблем), и утечка исчезла. Я использовал векторы, потому что я вызываю кучу кода C++, который мне не хотелось переписывать. Я еще не знаю плохих последствий использования C++ для программирования под iOS. О, так многому нужно научиться. Спасибо за информацию о NSNumber! - person rahil627; 03.06.2012
comment
вы можете свободно использовать c++ для iOS, но у Objective-C гораздо более удобная модель управления памятью - person Morion; 03.06.2012
comment
А, хорошо, приятно знать. Я слышал, что когда вы смешиваете Obj-C C++ на iOS, случаются плохие вещи. Я узнаю достаточно скоро. - person rahil627; 03.06.2012