子ダイアログウィンドウのメモリ管理

Hoehli

次のコードを使用して、次MyWindowClassのサブクラスであるウィンドウを表示しますQDialog

//header mainwindow.h
MyWindowClass *myWindow;

//mainwindow.cpp
void MainWindow::on_actionButton_triggered()
{
    myWindow = new MyWindowClass(this);
    myWindow->show();
}

thisオブジェクトの削除管理するStackOverflowについて読みました

mainWindowが削除されると、ウィンドウは削除されます。

Windowsタスクマネージャを開いて、プログラムが使用しているRAMの量を確認すると、新しいダイアログウィンドウが開くたびに、使用されるメモリが増加します。

ここまでは順調ですね。ただし、(ではなくmainWindowダイアログウィンドウを閉じると、使用されるRAMが減少します。これは、メモリがQtによって割り当て解除されることを意味します。

引用のように、親mainWindowが削除されるとダイアログウィンドウが削除されることを期待しています

私はそれを間違えましたか?

グルシャン

Qtには、親子関係と呼ばれる機能があり、「this」ポインターを使用して作成したオブジェクトが子であり、「this」ポインターが指すオブジェクトが親です。基本的には、親オブジェクトが削除されるたびに、オブジェクトが削除されることを示しています。したがって、親オブジェクトが削除された場合、オブジェクト化されたすべての子も削除されました。このメカニズムは、親が削除された場合にのみ、子オブジェクトが削除されることを保証します。ダイアログボックスを閉じたときにQtが子オブジェクトを削除すると思っていた場合は、間違っています。qtは親が削除された場合にのみメモリを解放するため、メモリが心配な場合はスマートポインタを使用することをお勧めします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

トップレベルウィンドウ、子ウィンドウ、ダイアログ(モーダル)ウィンドウ、および非ダイアログ(モードレス)ウィンドウの違いは何ですか?

分類Dev

Qt-メインウィンドウが作成される前の非モーダルダイアログ

分類Dev

WPFでモーダルダイアログを開くと灰色のメインウィンドウ

分類Dev

JQueryダイアログの子ウィンドウの場所を取得する

分類Dev

メインウィンドウからダイアログへの値の更新

分類Dev

MFC、メインウィンドウからモーダルダイアログを閉じる方法は?

分類Dev

モーダルダイアログボックスがメインHTAウィンドウと通信しない

分類Dev

EXTJSのモーダルウィンドウでボタンがクリックされたときに、メインウィンドウでストアをリロード/グリッドを更新します

分類Dev

ダイアログウィンドウのMessageBox(VS 2012、MFC C ++)

分類Dev

新しいブラウザのタブ/ウィンドウでリンクを開くときにモーダルダイアログを閉じる

分類Dev

メインアプリウィンドウがない画面に表示されるPhotoshopダイアログ

分類Dev

AngularアプリケーションのPrimeNGp-dialogモーダルは、背景とダイアログウィンドウ自体をブロックします

分類Dev

ウィンドウのrootViewControllerを変更したメモリ管理

分類Dev

「ダイアログの表示」ウィンドウをapplescriptのフロントウィンドウにします

分類Dev

Qtメインウィンドウからダイアログを開く

分類Dev

マウスクリックでメインウィンドウのカスタムダイアログを閉じるpyqt

分類Dev

ポップアップ/子ウィンドウの保存アクションから親/メインウィンドウのタグをレンダリングする方法

分類Dev

MicrosoftEdgeの印刷ダイアログが子ウィンドウ内で開きます

分類Dev

pyqt5アプリケーションのダイアログとメインウィンドウの国際化(翻訳)

分類Dev

Mahapps Metro:ウィンドウの下部に非モーダル自動終了メッセージダイアログを表示する

分類Dev

pyqtのダイアログウィンドウからメインウィンドウにデータを取得する方法は?

分類Dev

WPF、MVVM-メインウィンドウを基準にしてダイアログウィンドウの位置を設定しますか?

分類Dev

Selenium/Java/EdgeDriver: モーダル ウィンドウのダイアログ ボックスがテスト スクリプトの実行を停止する

分類Dev

ダイアログの親ウィンドウに子としてのダイアログがないのはなぜですか?

分類Dev

ダイアログのイベントに基づいてメインウィンドウにリストを入力する方法

分類Dev

Unityプロジェクトのデバッグ->ウィンドウ->メモリ?

分類Dev

mfcでダイアログウィンドウのサイズを変更(ドラッグ)すると、メモリリソースの使用量が大幅に増加します

分類Dev

WPF-Prism7.1-ナビゲーション-マスタリングタブコントロール-モーダル/ダイアログウィンドウ

分類Dev

ダイアログウィンドウを閉じるDMスクリプト

Related 関連記事

  1. 1

    トップレベルウィンドウ、子ウィンドウ、ダイアログ(モーダル)ウィンドウ、および非ダイアログ(モードレス)ウィンドウの違いは何ですか?

  2. 2

    Qt-メインウィンドウが作成される前の非モーダルダイアログ

  3. 3

    WPFでモーダルダイアログを開くと灰色のメインウィンドウ

  4. 4

    JQueryダイアログの子ウィンドウの場所を取得する

  5. 5

    メインウィンドウからダイアログへの値の更新

  6. 6

    MFC、メインウィンドウからモーダルダイアログを閉じる方法は?

  7. 7

    モーダルダイアログボックスがメインHTAウィンドウと通信しない

  8. 8

    EXTJSのモーダルウィンドウでボタンがクリックされたときに、メインウィンドウでストアをリロード/グリッドを更新します

  9. 9

    ダイアログウィンドウのMessageBox(VS 2012、MFC C ++)

  10. 10

    新しいブラウザのタブ/ウィンドウでリンクを開くときにモーダルダイアログを閉じる

  11. 11

    メインアプリウィンドウがない画面に表示されるPhotoshopダイアログ

  12. 12

    AngularアプリケーションのPrimeNGp-dialogモーダルは、背景とダイアログウィンドウ自体をブロックします

  13. 13

    ウィンドウのrootViewControllerを変更したメモリ管理

  14. 14

    「ダイアログの表示」ウィンドウをapplescriptのフロントウィンドウにします

  15. 15

    Qtメインウィンドウからダイアログを開く

  16. 16

    マウスクリックでメインウィンドウのカスタムダイアログを閉じるpyqt

  17. 17

    ポップアップ/子ウィンドウの保存アクションから親/メインウィンドウのタグをレンダリングする方法

  18. 18

    MicrosoftEdgeの印刷ダイアログが子ウィンドウ内で開きます

  19. 19

    pyqt5アプリケーションのダイアログとメインウィンドウの国際化(翻訳)

  20. 20

    Mahapps Metro:ウィンドウの下部に非モーダル自動終了メッセージダイアログを表示する

  21. 21

    pyqtのダイアログウィンドウからメインウィンドウにデータを取得する方法は?

  22. 22

    WPF、MVVM-メインウィンドウを基準にしてダイアログウィンドウの位置を設定しますか?

  23. 23

    Selenium/Java/EdgeDriver: モーダル ウィンドウのダイアログ ボックスがテスト スクリプトの実行を停止する

  24. 24

    ダイアログの親ウィンドウに子としてのダイアログがないのはなぜですか?

  25. 25

    ダイアログのイベントに基づいてメインウィンドウにリストを入力する方法

  26. 26

    Unityプロジェクトのデバッグ->ウィンドウ->メモリ?

  27. 27

    mfcでダイアログウィンドウのサイズを変更(ドラッグ)すると、メモリリソースの使用量が大幅に増加します

  28. 28

    WPF-Prism7.1-ナビゲーション-マスタリングタブコントロール-モーダル/ダイアログウィンドウ

  29. 29

    ダイアログウィンドウを閉じるDMスクリプト

ホットタグ

アーカイブ