私はこれらの質問についてしばらくの間潜んでいて、多くのことを学びましたが、最近、理解できない問題に直面しました. 私は Qt を使用しており、さまざまなクラス メソッド (最終的には QLabel に設定されます) で QMovie オブジェクトを作成/置換する必要があります。new キーワードを使用してオブジェクトを定義しました。したがって、私が持っているヘッダーに
QMovie * movie;
簡単にするために、同等のコードを 1 つのメソッドにまとめます。これは、2 行のコードに相当します。
QMovie * movie = new QMovie(QByteArray1,this);
QMovie * movie = new QMovie(QByteArray2,this);
これは機能しますが(理由はわかりません)、繰り返しの操作であるため、メモリリークが心配です。2 番目の定義が最初の定義を正常に置き換えているように見えますが、おそらくそれぞれに異なるポインターがあるため、最初の定義へのポインターを削除する方法がわかりません。クラス デストラクタでムービーを削除しましたが、すべてが削除されるかどうかわかりません。ここで何が起こっているか知っている人はいますか?
PS QByteArray (Web からダウンロードした) のデータを使用して QMovie オブジェクトを作成する唯一の方法 (Qt で見つけた) は、QMovie コンストラクターを使用することであるため、これを行います。現在のムービー データをファイルの新しいデータに置き換えたいだけの場合は、次のメソッドを使用できます。
movie->setFileName(fileName);
ただし、バイナリ データを使用する場合、これはオプションではありません。注: QMovie には、引数として QByteArray の代わりにファイル名を持つコンストラクターもあります。ファイル名を使用すると、上記のコードを使用しても機能し、テストが容易になります。
どんな助けでも大歓迎です。