Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453

    [C++] Memory leak utility per Dev-cpp

    ciao a tutti...

    sto sviluppando un progetto abbastanza ampio, e mi è saltato fuori un errore parecchio strano che non riesco a scovare... Mi si chiude il programma, e facendo un debug Dev cpp mi dice che c'è un segmentation fault.. Commentando alcune righe che NON vengono eseguite nella funzionalità che sto testando il programma funziona, quindi dev'essere una particolare configurazione di memoria che crea problemi, qualcosa di non deallocato, o deallocato due volte, o acceduto dopo che è stato deallocato..

    Mi è stato consigliato di usare un programma di memory leak per scovare l'errore, ma cercando sul web ho trovato soltanto delle utility per Visual Studio, che mi da problemi. Mi servirebbe qualcosa per dev c++, o qualcos'altro che sappiate consigliarmi...

    Qualcuno mi sa indicare qualcosa? Sto impazzendo con questo problema, che ha avuto il tempismo di presentarsi a tre giorni dalla consegna del progetto...

    grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se hai individuato la riga (o la funzione) in cui si verifica il problema, con un po' di debugging (esecuzione linea per linea), non dovrebbe essere difficile individuare la causa.

    Il memory leak non c'entra con il segmentation fault ... quello strumento non ti servirebbe ...

    Se puoi mostrare il codice e dare qualche indicazione, puo' darsi che si scopra il problema ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    Ho provato col debug del dev, ma non riesco ad ottenere molte informazioni...Ad ogni modo la riga a cui sembra fermarsi è in questo costruttore:


    codice:
    Var(symb_map::iterator var_map):label(var_map->first), identif(var_map){
                      Expression::type = var_map->second.first; // <--------------------
    }
    Quel costruttore viene chiamato con questo argomento:
    codice:
    pair<bool,symb_map::iterator> result = st->isDeclared((*i)->getName());
    
     e1 = new Var(result.second);
    Il progetto che sto facendo è un compilatore... Quello è il costruttore di una variabile riconosciuta dal compilatore. L'aver pensato al memory leak o cose così è perchè questo errore si manifesta solo in un programma che fa la somma dei primi 2000 numeri: se nella somma metto i primi 1937 numeri funziona, se aggiungo un operando da il problema. Ecco anche perchè col debug passo passo è un po' un problema capire qualcosa, perchè il programma è volutamente pesante, per mettere alla prova la rapidità del nostro compilatore.
    (la somma viene fatta così: int var1 = 1; int var2=2; .... int var2000 = 2000; var0 = var1 + var2 + ... + var2000; return var0

    Le righe che commentate tolgono il problema non c'entrano niente, si trovano all'interno di un if in cui si entra soltanto quando si cerca di riconoscere un'espressione tra parentesi (che non sono presenti nel programma che da errore): infatti mettendo delle stampe di debug queste non vengono stampate.

    Non so, mi rendo conto che è difficile capire qualcosa da queste poche righe, ma d'altra parte il progetto è ampio, non è un file o due che posso postare qui..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.