2012-06-03 25 views
0

下面的代碼:非指針類型的C++向量是否會導致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) 

我猜我應該在堆中分配的載體,但我還是不明白,爲什麼發生這種情況。也有可能我沒有正確地釋放課程。

回答

4

檢查你的類的dealloc是否被調用。這似乎是在這種情況下可以調用泄漏的一種方式。只有一個問題:爲什麼你不使用本地的Objective-C容器?你很需要將你的浮點數存儲在NSNumbers中,但是你可以對所有的實例使用標準的保留/釋放內存管理模型。

+0

我能以某種方式讓類去dealloc(哦,好多問題),並且泄漏消失了。 我使用的載體,因爲我調用了一堆C++代碼,我不想重寫。我還不知道使用C++進行iOS編程的不良後果。哦,學習很多。儘管感謝NSNumber的信息! – Rahil627

+0

你可以免費使用iOS的C++,但Objective-C有更舒適的內存管理模型 – Morion

+0

啊好吧,很高興知道。當你在iOS上混用Obj-C C++時,我聽說過壞事發生。我很快就會知道。 – Rahil627

相關問題