2012-04-02 15 views
5

Ho un problema nel mio progetto. A volte l'esecuzione fallisce con l'errore "non accedere ad una posizione di lettura/scrittura xxxxx". So che si tratta di un errore di corruzione della memoria. Ma come posso rintracciare questo errore. Sta fallendo nella deallocazione di memoria di una variabile, se commento quella linea sta funzionando bene. Cioè, la memoria per questa variabile è già stata rilasciata. Prima stava funzionando bene, ho aggiunto il codice di recente ma non ho cambiato nulla relativo a questo. Come posso controllare la corruzione della memoria per questo.come controllare la corruzione della memoria in C++

+0

Che sistema operativo, compilatore e IDE stai utilizzando? –

+0

Quale piattaforma? In ogni caso, fai qualche ricerca su google o cerca SO, questa domanda è stata posta a morte un milione di volte. –

+0

@Amaravathi Probabilmente c'è una doppia cancellazione nel tuo programma. Con solo la descrizione, non è possibile dire dove si trova il problema. Replicare il problema su un piccolo programma e inserire il codice qui. – Mahesh

risposta

0

Con le informazioni fornite, dovrai scorrere tutto il codice che hai aggiunto di recente (se si tratta di un problema recente) e valutare e controllare ogni riga e vedere se stai stompando la memoria. memcopy è un comando che può causare questo tipo di errore se stai allocando troppo per la dimensione dell'elemento che stai copiando.

Assicurati di cancellare solo gli oggetti (puntatori) una volta.

7

Usa valgrind se sei sotto linux, ti mostrerà esattamente cosa sta succedendo se calpesti la tua memoria.

Su finestre: see here.

+0

No. Sono su Windows. usando l'editor VS 2008 – Amaravathi

+1

@Amaravathi Bene, perché non l'hai detto nella tua domanda iniziale? Avrebbe aiutato grandi quantità. – Bojangles

+0

Avere un problema di corruzione della memoria tranne quando corro sotto valgrind quindi non segfault ovviamente, naturalmente. –

0

Se si utilizza Windows, provare winDbg. È il migliore e molto potente.

Problemi correlati