Qt 메모리 유출 원인 및 해결 방법

772 단어 Qt
유출 원인:
    int main(int argc,char *argv[])
    {
        QApplication app(argc,argv);
        QLabel *label = new QLabel("Hello World");
        label->show();
        return app.exec();
    }

exec () 가 종료될 때 (즉 이벤트 순환이 끝날 때입니다. 창이 닫히면 이벤트 순환이 끝납니다.) label은 delete를 할 수 없습니다. 메모리 유출을 초래합니다.
label은 무더기에 세워진 것이고 app는 창고에 세워진 것이다. 이것은 label이 app 다음에 분석된다는 것을 의미한다. 즉, label액의 생명주기가 app의 생명주기보다 길다는 것이다.이것은 Qt프로그래밍의 금기입니다!!!
app가 종료되었을 때 구성 요소가 닫히지 않아 프로그램이 붕괴될 수 있습니다
해결 방법:
    /****************      ,2   **********************/
    label->deleteLater();//          ,       
    label->setAttribute(Qt::WA_DeleteOnClose);//                
    /*********************************************/

좋은 웹페이지 즐겨찾기