0

コードは次のとおりです。

@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

1 に答える 1

4

クラスの dealloc が呼び出されているかどうかを確認します。この場合、リークを呼び出すことができる唯一の方法のようです。1 つだけ質問があります。ネイティブの Objective-C コンテナーを使用しないのはなぜですか? float を NSNumbers に保存する必要がありますが、すべてのインスタンスに対して標準の保持/解放メモリ管理モデルを使用できます。

于 2012-06-03T09:40:19.170 に答える