Objective-Cで書かれた既存のCocoaアプリケーションに機能を追加しました。私は書くクラスの既存のC++クラスを使用しなければならないので、新しいクラスはObjective-C++です。さらに、バッファを一時的に使用するC++クラスのメソッドを記述する必要がありました。だから、私はC++の方法は、私は私の.mmファイルにC++クラスをインスタンス化し、続けていくことを試みる新規、削除、Objective-C++、リーク
(void) myMethod{
int8_t* bffr = new int8_t[length];
// use the buffer
delete [] bffr;
}
のようなものです。問題は、アプリケーションがクラッシュすることです。しかし、私がdelete
をコメントアウトすると、アプリはクラッシュしませんが、Instrumentsはこのメソッドに関連するリークを報告します。 Objective-Cのメモリ管理が強化されていると私は推測しています。このcatch-22を解決するにはどうすればよいですか?
私はmallocとget_temporary_bufferを使用して同じ結果を得ています。
それはあなたの「バッファを使用して」コードに問題があるかなり可能だが、それが何を私たちに示してください。 。 –
+1 @JoshuaWeinbergあなたのバッファがコピーされていないObjectiveCオブジェクトの影響を受けるなら、それは安全に削除できません。 – jv42