奇怪现象:自动对象的构造析构时机不对?(vs2005)
#pragma once
#include "mmsystem.h"
#pragma comment(lib, "winmm.lib")
#ifdef _DEBUG
class CTraceTime
{
public:
CTraceTime(const wchar_t* tskname)
{
m_csTskname = tskname;
CString sOutput2;
sOutput2.Format(L"%s :%010d\n", m_csTskname, timeGetTime());
OutputDebugString(sOutput2);
}
~CTraceTime()
{
CString sOutput2;
sOutput2.Format(L"%s End:%010d\n", m_csTskname, timeGetTime());
OutputDebugString(sOutput2);
}
private:
CString m_csTskname;
};
#define TRACE_TIME(x) CTraceTime(x)
#else
#define TRACE_TIME(x)
#endif
usage:
TRACE_TIME(L"test task");
TRACE(L"between task");
vs2005编译输出:
test task bgn:xxx
test task end:xxx
between task
期望的输出结果应该是:
test task bgn:xxx
between task
test task end:xxx
很显然,对象过早析构了,对此我很是不解!
在此寻求答案。