티스토리 뷰

목차

    반응형

    [Qt 프로그래밍] Qwt 소멸자 코드 (그래픽 라이브러리) 


    Qwt Plot를 사용한 뒤 메모리 해제를 완벽히 하려면 detachItems() 함수를 이용해야 합니다.


    Qwt User's Guide 6.1.2의 QwtPlotItem Class Reference 문서를 참조해 보면, plot 내부에 많은 아이템 클래스가 존재하는 것을 확인할 수 있습니다.


    Qwt 소멸자 코드 Qt 프로그래밍[Qt 그래픽 라이브러리] QWT 소멸자


    보시다시피 저 수많은 아이템 중, 실제 사용하셨던 아이템들은 detachItems()로 해제해 줘야 합니다.


    그래야 메모리 누수가 발생하지 않아요. 해제 코드는 꽤 간단합니다. 해제할 아이템을 선택하고 true를 인자로 넘기면 됩니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    plot_->detachItems(QwtPlotItem::Rtti_PlotItem, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotGrid, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotScale, true);
     
    plot_->detachItems(QwtPlotItem::Rtti_PlotLegend, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotMarker, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotCurve, true);
     
    plot_->detachItems(QwtPlotItem::Rtti_PlotSpectroCurve, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotIntervalCurve, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotHistogram, true);
     
    plot_->detachItems(QwtPlotItem::Rtti_PlotSpectrogram, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotSVG, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotTradingCurve, true);
     
    plot_->detachItems(QwtPlotItem::Rtti_PlotBarChart, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotMultiBarChart, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotShape, true);
     
    plot_->detachItems(QwtPlotItem::Rtti_PlotTextLabel, true);
    plot_->detachItems(QwtPlotItem::Rtti_PlotZone, true);
    cs


    간단하네요.


     [Qt 프로그래밍] Qwt 소멸자 코드 (그래픽 라이브러리)

    반응형