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);//
/*********************************************/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt로 문자와 이미지의 혼합 텍스트 그리기텍스트를 그리려면 QPainter::drawText 함수를 사용하지만 텍스트와 동시에 이미지 (아이콘 등)를 함께 그리기를 원합니다. QLabel와 QPushButton는 이미지와 텍스트를 표시하는 기능을 가지고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.