Arresto anomalo della violazione dell'accesso vettoriale di VC ++ 6.0. Bug noto?

StackOverflow https://stackoverflow.com/questions/608228

  •  03-07-2019
  •  | 
  •  

Domanda

Sto cercando di usare uno std :: vector < > :: const_iterator e ottengo un arresto anomalo della "violazione di accesso". Sembra che il codice std :: vector si stia arrestando in modo anomalo quando utilizza i propri puntatori First_ e Last_ interni. Presumibilmente questo è un bug noto. Spero che qualcuno possa indicarmi la soluzione corretta. È probabilmente rilevante che la funzione di arresto anomalo venga chiamata da una libreria esterna?

const Thing const*  AClass::findThing (const std::string& label) const
{
    //ThingList_.begin() blows up at run time.  Compiles fine.
    for (std::vector<Thing*>::const_iterator it = ThingList_.begin(); it != ThingList_.end(); ++it) {
        //Irrelevant.
    }
    return 0;
}

Anche la semplice chiamata di ThingList_.size() si arresta in modo anomalo.

Questo è sp6, se è importante.

È stato utile?

Soluzione

Se si passano oggetti C ++ oltre i limiti delle librerie esterne, è necessario assicurarsi che tutte le librerie utilizzino la stessa libreria di runtime (in particolare, lo stesso allocatore di heap). In pratica, ciò significa che tutte le librerie devono essere collegate alla versione DLL di MSVCRT.

Altri suggerimenti

È quasi certamente un bug nel tuo codice e non std :: vector. Questo codice viene utilizzato da troppi progetti per avere un bug così facile da riproporre.

Quello che sta probabilmente accadendo è che la variabile ThnigList_ è stata corrotta in qualche modo. L'array sottostante è stato visualizzato direttamente e / o modificato?

Sono d'accordo con Jared che probabilmente è nel tuo codice, tuttavia, dovresti essere sicuro che le tue librerie stl siano aggiornate.

Il sito dinkumware ha i file patchati di cui hai bisogno.

Dovresti aggiornare solo per sicurezza

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top