AfxBeginThread发生内存泄漏

时间:2019-06-28 23:00:31

标签: c++ mfc

已更新。我整天都在苦苦挣扎,但我保留了代码,最后决定回去尝试一些不同的东西。

也许我误会了,但是...

Windows资源监视器和内存验证器(第三方工具)均指示AfxBeginThread正在消耗内存。如果我在不创建线程的情况下调用同一类,则内存将保持不变。因为这是周期性的,所以随着时间的流逝,它变成了一种责任。

我以为这可能是我班上的一门课,所以我创建了一个新班,除了对IsBusy()的调用外,其他所有内容都没有,并使其在线程中启动。它仍然会消耗内存。

奇怪的是,VS调试器或Memory Validator工具都看不到任何内存丢失。但是Windows资源监视器很清楚内存使用量正在增加。

问题:线程何时真正释放内存?是在RunImports()的末尾吗?还是该线程实际上在类TillBotTimer的生命周期中一直存在?也许这就是我的假设,即如果反复调用,如何清除所有内容?

UINT LaunchImportThread(LPVOID lParam)
{
    int iReturn=1;

    TillBotImport *pTBI = (TillBotImport *)lParam;

    return(iReturn);
}

void TillBotTimer::RunImports()
{
    CTestThread piPoll;

    AfxBeginThread(LaunchImportThread, &piPoll);

    while (piPoll.IsBusy()) {
        Sleep(0);
        ProcessMessages();
    }
}

0 个答案:

没有答案