Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435

    [C++] Heap corruption detected!

    Ciao ragazzi, questo messaggio mi esce con un'applicazione che ho creato tramite visual studio per windows 7...sembrerebbe che provi ad accedere a una zona dell'area heap proibita.
    Ho anche individuato il frammento di codice che la causa ma non riesco a venirne a capo in quanto mi sembra normalissimo (è anche vero che non uso il c++ da un po' di tempo).
    Praticamente è il distruttore di questa classe:
    codice:
    class DataContainer{ 	
    public: 		
    DataContainer(){ 			
    data = NULL; 			
    valid = false; 		
    } 		
    
    void setData(const char* data1);  		
    ~DataContainer(){
     if(valid) delete []data; 		
    }  		
    bool isValid();  		
    const char* getData();  	
    private: 		
    bool valid; 		
    char* data;  };
    Con la funzione setData che fa così:
    codice:
    void DataContainer::setData(const char* data1){ 	
    data = new char[strlen(data1)]; 	
    strcpy(data,data1); 	
    valid = true; }
    AiutoT_T

  2. #2
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Ciao ... Con data devi allocare spazio anche per il carattere terminatore ....
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

  3. #3
    Utente di HTML.it L'avatar di Dark867
    Registrato dal
    Mar 2010
    Messaggi
    435
    Grazie mille sembra che ora vada!
    Strano pensavo che strlen mi tenesse conto anche del terminatore...

  4. #4
    Utente di HTML.it L'avatar di KrOW
    Registrato dal
    Feb 2009
    Messaggi
    281
    Prego ... Guarda qui per maggiori informazioni sulla strlen (anche se a quest punto c'é poco da approfondire) e sulla libreria standard in generale ...
    C++ 4ever
    496e2062696e6172696f206e6f6e2063692061767265737469 206e656d6d656e6f2020726f7661746f203a29

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.