루프에서 QThread 삭제 :다음과 같이 처리하고 for 루프에서 실행되고 내가 QThread에서 상속 된 클래스 (IT를 ClassA라고 할 수 있습니다) 한
는for(int i=0;i<somenumber;i++)
{
ClassA* classa = new ClassA();
classa->execute(); // just a normal direct function call
classa->exit();
classa->deleteLater();
}
문제는를 ClassA는이 포함된다 많은 양의 메모리가 필요하며 루프가 계속 실행되는 동안 파손되지 않는 것 같습니다. 따라서 프로그램은 메모리가 생성 된 직후 (메모리 누수와 같이) 충돌합니다. 나는 물론 "classa 삭제"를 사용하여 프로그램을 중단 시키려고했습니다.
누구나 루프에서 이러한 클래스를 올바르게 실행하고 삭제하는 방법을 알고 있으므로 지속적으로 메모리를 차지하지는 않습니다.
for 루프도 다른 스레드에 있습니다. 그래서 deleteLater()를 호출 할 때 이벤트 루프가 중요한 스레드 계층 구조가 있습니까? 이 코드는 너무 복잡해서 글을 쓸 수는 없지만 내가 원하는 가장 빠른 대답은 스레딩 환경에서 적절하게 Qthread 객체를 삭제 (예 : eventloop을 올바르게 사용)하여 메모리 누수가 없거나 (예 : Qthread 개체는 삭제되지 않습니다.
[포스트는 최소, 전체, 올바른 예 (http://stackoverflow.com/help/mcve). – Rakib
코드가 너무 복잡해서 글을 쓸 수 없지만 가장 빠른 대답은 스레딩 환경 (예 : eventloop을 올바르게 사용)에서 Qthread 객체를 올바르게 삭제하여 메모리 누수가 없거나 메모리를 구축하는 것과 비슷합니다. Qthread 객체는 삭제되지 않으므로) –