Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] Deallocare i <vector>

    Vi scrivo il codice delle varie classei

    codice:
    #include <Windows.h>
    #include <vector>
    #include <crtdbg.h>
    
    
    #include "classe_a.h"
    
    
    
    using namespace std;
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
    {
    	_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
    
    
    	PtrA->Init();
    	int h;
    	h=0;
    	return h;
    }

    codice:
    //File classe_a.h
    
    class ClasseA
    {
        public:
    	ClasseA();
    	virtual void Init();
    };
    
    extern ClasseA*	PtrA;
    
    //File classe_a.cpp
    #include "classe_a.h"
    
    
    ClasseA::ClasseA()
    {
    
    }
    
    void ClasseA::Init()
    {
    	int fkf=0;
    }
    File
    codice:
    //File classe_b.h
    #include <Windows.h>
    #include "classe_a.h"
    
    class Bb: public ClasseA
    {
        public:
    	Bb();
    	void Init();
    };
    
    //File classe_b.cpp
    #include "classe_b.h"
    #include <vector>
    using namespace std;
    ClasseA* PtrA = new Bb();
    
    Bb::Bb():ClasseA()
    {
    
    }
    void Bb::Init()
    {
    	vector<int> ss;
    	ss.push_back(43);
    	ss.clear();
    }

    Questo codice genera memory leak quando faccio ss.push_back(43);, perchè? i vector di int come possono generare memory leak VVoVe: ?

    Aiuto

  2. #2

    Re: [C++] Deallocare i <vector>

    Originariamente inviato da ercand83
    Questo codice genera memory leak quando faccio ss.push_back(43);, perchè? i vector di int come possono generare memory leak VVoVe: ?
    Non credo che generi memory leak (considerato anche cosa sono i memory leak)... che messaggio di errore ti viene fuori precisamente?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Controllando meglio non ho fatto il delete della classe istanziata, comunque ho riportato male la classe_b


    codice:
    //File classe_b.h
    #include "classe_a.h"
    #include <Windows.h>
    #include <vector>
    using namespace std;
    
    class Bb: public ClasseA
    {
        public:
    	Bb();
    	void Init();
    	vector <int> ss;
    };
    
    //File classe_b.cpp
    #include "classe_b.h"
    
    ClasseA* PtrA = new Bb();
    
    Bb::Bb():ClasseA()
    {
    }
    void Bb::Init()
    {
        ss.push_back(43);
    }
    esenguo questo codice mi da il messaggio
    codice:
    Detected memory leaks!
    Dumping objects ->
    {241} normal block at 0x00366A98, 4 bytes long.
     Data: <+   > 2B 00 00 00 
    Object dump complete.
    The program '[1740] gtgtgtgt.exe: Native' has exited with code 0 (0x0).
    che appare solo quando faccio il push_back()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.