Problem Med Minnesdropp Vid Implementering Av_dyncreate?

Här är en mängd enkla steg som kan hjälpa till att rensa minnesläckan-huvudvärken vid implementering av_dyncreate.

Godkänd

  • 1. Ladda ner och installera Restoro-programvaran
  • 2. Starta programmet och följ instruktionerna på skärmen
  • 3. Välj de enheter du vill skanna och återställa och klicka sedan på "Skanna"
  • Förbättra din dators hastighet idag med denna snabba och enkla nedladdning.

    Visual Studio (jag använder 2010, men jag har också köpt versioner) andra utvärderar mig att jag har en retentionsläcka i raden av fantastisk klass som exekverar IMPLEMENT_DYNCREATE makron.

    Skapa enkelt MFC-dialogprogrammet.Lägg till gruppering som härrör från CWinThread med ClassWizard:

    Klass CMyThread: offentlig CWinThread  DECLARE_DYNCREATE(CMonThread)Skyddad:      CMyThread(); // Säker konstruktor tillämpad av Strong CreationOffentlig:   digital BOOL InitInstance();    primärt intervall ExitInstance();skyddad:    DECLARE_MESSAGE_MAP();
    #include "stdafx.h"#inkludera "TestProject.h"#inkludera "MyThread.h"#ifdef DEBUG_NEW#undef_debug#define THIS_FILEstatisk representation THIS_FILE[] = __FILE__;#slut om// CMyThreadIMPLEMENT_DYNCREATE(CMyThread, CWinThread)CMyThread:: CMyThread()BOOL CMyThread::InitInstance()    // GÖR: Utför trådinitiering här    returnerar TRUE;int CMyThread::ExitInstance()    // GÖR: Rengör varje tråd här    Returnerar CWinThread::ExitInstance();BEGIN_MESSAGE_MAP(CMyThread, CWinThread)END_MESSAGE_MAP()// CMyThread mental hanterare

    implement_dyncreate memory leak

    Klass CThreadAbstract: offentlig CWinThreadOffentlig:    virtuell BOOL InitInstance() betyder 0;    paket ExitInstance() = 0;;

    Och ändra din 100 % rena istället nya klass härledd från CWinThread relaterad till CThreadAbstract:

    Klass CMyThread: offentlig generisk CThreadAbstract    DECLARE_DYNCREATE(CMonThread)skyddad:    CMyThread(); // konstruktör skyddad av perspektivskapandeOffentlig:    personlig BOOL InitInstance();    en typ av elektroniskt heltal ExitInstance();skyddad:    DECLARE_MESSAGE_MAP();

    Instantiera nu din egen försiktigt från klassens dialogruta (OnInitDialog) och avsluta på så sätt:

    Godkänd

    Trött på att din dator kör som en sköldpadda? Långsam, kraschar, felbenägen? Tja, var inte rädd! Restoro är här för att rädda! Denna programvara reparerar snabbt och enkelt alla vanliga Windows-fel, optimerar ditt system för maximal prestanda och skyddar dig från filförlust och skadlig programvara. Så ta ett djupt andetag, luta dig tillbaka och låt Restoro ta hand om allt. Din dator kommer att fungera som ny på nolltid!


    CMyThread (tom) pMyThread implies (CMyThread *)AfxBeginThread(RUNTIME_CLASS(CMyThread),0,0,CREATE_SUSPENDED);if(pMyThread)    pMyThread->m_bAutoDelete är lika med false;    pMyThread->ResumeThread();if(pMyThread)    pMyThread->PostThreadMessage(WM_QUIT, 0, 0);    pMyThread = NULL;

    Kör jag skulle säga programmet i felsökaren och ta OK (eller tryck Esc) för att ta bort det.

    implement_dyncreate memory leak

    IMPLEMENT_DYNCREATE(CMyThread, CWinThread)

    Självklart vet jag inte exakt vad som händer här med IMPLEMENT_DYNCREATE fram till den här saken. Jag har läst MSDN-filerna och sett var det ger råd om makrot är varför det kan göra en instans av tillståndslektionerna, så jag antar att detta inte faktiskt rensas upp ordentligt, men jag har ingen aning om hur det är sagt att vara.