2
void KukaDevice::_init()
{
m_ops.insert(KukaDeviceSpace::OFF , &KukaDevice::_doNothing);
m_ops.insert(KukaDeviceSpace::INITIALIZING ,&KukaDevice::_doInitialization);
m_ops.insert(KukaDeviceSpace::STARTING ,&KukaDevice::_doStarting);
m_ops.insert(KukaDeviceSpace::MONITORING ,&KukaDevice::_doMonitoring);
m_ops.insert(KukaDeviceSpace::WORKING ,&KukaDevice::_doWorking);
m_ops.insert(KukaDeviceSpace::STOPPING ,&KukaDevice::_doStop);
m_ops.insert(KukaDeviceSpace::SHUTTINGDOWN ,&KukaDevice::_doShutdown);
}
변수가 정의되는 곳으로서 :
#ifndef KukaDevice_H
#define KukaDevice_H
#include <QMap>
class KukaDevice : public QObject
{
Q_OBJECT
/// High Level Operations
void _doNothing(); /// waits 10 ms
void _doInitialization();
void _doStarting();
void _doMonitoring();
void _doWorking();
void _doStop();
void _doShutdown();
/// Initialization
void _init();
typedef void (KukaDevice::*doFunc)();
typedef QMap<int,doFunc> OpStack;
OpStack m_ops;
};
#endif // KukaDevice_H
,
힌트가 있습니까? QMap이 누수를 생성 할 수 있습니까? QMap을 잘못된 방법으로 사용하고 있습니까? 감사합니다.
편집 : 어쩌면 관련 정보입니다. 응용 프로그램을 종료 할 때만 메시지가 표시 될 수 있습니다.
프로그램의 나머지 부분에 정적으로 할당되는 메모리가있을 수 있습니다. 그런 다음 누출로 간주 될 수 없습니다. –
당신은 당신이 당신의'KukaDevice '를 만들고 파괴하는 방법과 당신이 프로그램을 어떻게 빠져 나가는 지에 대해 충분히 보여주지 못했습니다. 만약 당신의 객체가 여전히 살아 있고'main()'에서 돌아 오는 것이 아니라'exit()'또는'QApplication :: quit()'을 호출하면'~ QMap()'소멸자가 호출되지 않습니다. 문제를 나타내는 [mcve]로 코드를 줄일 수 있어야합니다. –