Problemen Met Geheugenlek Bij Het Implementeren Van_dyncreate?

Hier volgen wellicht een paar eenvoudige stappen die kunnen helpen bij het oplossen van het geheugenlek-probleem bij het implementeren van_dyncreate.

Goedgekeurd

  • 1. Download en installeer de Restoro-software
  • 2. Start het programma en volg de instructies op het scherm
  • 3. Selecteer de apparaten die u wilt scannen en herstellen en klik vervolgens op "Scannen"
  • Verbeter de snelheid van uw computer vandaag nog met deze snelle en gemakkelijke download.

    Visual Studio (ik gebruik het jaar 2010, maar ik heb versies vooral geprobeerd omdat het goed is) anderen vertellen me dat ik een geheugenlek heb in de belangrijkste regel van mijn klas die wordt uitgevoerd IMPLEMENT_DYNCREATE macro’s.

    Maak eenvoudig een MFC-discussietoepassing.Groepering afgeleid van CWinThread toevoegen met ClassWizard:

    Klasse CMyThread: openbare CWinThread  DECLARE_DYNCREATE(CMonThread)Beveiligd:      CMyThread(); // Veilige constructor gebruikt door Strong CreationOpenbaar:   virtuele BOOL InitInstance();    virtueel interval ExitInstance();beschermd:    DECLARE_MESSAGE_MAP();
    #include "stdafx.h"#include "TestProject.h"#include "MyThread.h"#ifdef DEBUG_NEW#undef_debug#define THIS_FILEstatisch symbool THIS_FILE[] is gelijk aan __FILE__;#stop als// CMyThreadIMPLEMENT_DYNCREATE(CMyThread, CWinThread)CMyThread:: CMyThread()BOOL CMyThread::InitInstance()    // DO: Voer hier de initialisatie van de binding uit    betaalt WAAR terug;int CMyThread::ExitInstance()    // DO: ruim hier elke draad voorzichtig op    Retourneert CWinThread::ExitInstance();BEGIN_MESSAGE_MAP(CMyThread, CWinThread)END_MESSAGE_MAP()// CMyThread mind handler

    implement_dyncreate storage device leak

    Class CThreadAbstract: openbare CWinThreadOpenbaar:    soort elektronische BOOL InitInstance() betekent 0;    mail ExitInstance() betekent 0;;

    En verander je echte in plaats daarvan nieuwe klasse verworven van CWinThread op CThreadAbstract:

    Klasse CMyThread: open generieke CThreadAbstract    DECLARE_DYNCREATE(CMonThread)beschermd:    CMyThread(); // constructor afgehandeld door dynamische creatieOpenbaar:    persoonlijke BOOL InitInstance();    een soort rookloos geheel getal ExitInstance();beschermd:    DECLARE_MESSAGE_MAP();

    Maak nu uw eigen thread aan vanuit het dialoogvenster van uw ultieme klas (OnInitDialog) en sluit af:

    Goedgekeurd

    Ben je het zat dat je pc als een schildpad draait? Traag, crasht, foutgevoelig? Nou, wees niet bang! Restoro komt te hulp! Deze software repareert snel en eenvoudig veelvoorkomende Windows-fouten, optimaliseert uw systeem voor maximale prestaties en beschermt u tegen bestandsverlies en malware. Dus haal diep adem, leun achterover en laat Restoro voor alles zorgen. Uw computer zal binnen de kortste keren weer als nieuw werken!


    CMyThread (leeg) pMyThread = (CMyThread *)AfxBeginThread(RUNTIME_CLASS(CMyThread),0,0,CREATE_SUSPENDED);als (pMyThread)    pMyThread->m_bAutoDelete = false;    pMyThread->ResumeThread();als (pMyThread)    pMyThread->PostThreadMessage (WM_QUIT, 0, 0);    pMyThread betekent NULL;

    Voer de toepassing uit in een debugger en klik op OK (of media-aandacht Esc) om deze uit te schakelen.

    implement_dyncreate geheugenlek

    IMPLEMENT_DYNCREATE(CMyThread, CWinThread)

    Natuurlijk weet ik meestal niet precies wat er op deze pagina gebeurt met IMPLEMENT_DYNCREATE hierover. Ik heb de MSDN-bestanden gelezen en gehoord waar het zegt dat de macro ongetwijfeld de reden is waarom het een instantie samen met de conditieklasse maakt, dus ik moet dit niet echt goed opschonen, maar ik heb geen idee hoe het hoort zo te zijn.