Fallo por infracción de acceso a vectores de VC++ 6.0.¿Error conocido?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy intentando utilizar std::vector<>::const_iterator y aparece un bloqueo por "infracción de acceso".Parece que el código std::vector falla cuando usa su propio código interno. First_ y Last_ punteros.Presumiblemente se trata de un error conocido.Espero que alguien pueda indicarme la solución correcta.¿Probablemente sea relevante que la función de bloqueo se llame desde una biblioteca externa?

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;
}

simplemente llamando ThingList_.size() también falla.

Este es sp6, si es importante.

¿Fue útil?

Solución

Si está pasando objetos C ++ a través de límites de bibliotecas externas, debe asegurarse de que todas las bibliotecas estén utilizando la misma biblioteca de tiempo de ejecución (en particular, el mismo asignador de montón). En la práctica, esto significa que todas las bibliotecas deben estar vinculadas a la versión DLL de MSVCRT.

Otros consejos

Es casi seguro que es un error en su código y no std :: vector. Este código es utilizado por demasiados proyectos para tener un error tan fácil de reprobar.

Lo que probablemente está sucediendo es que la variable ThnigList_ se ha dañado de alguna manera. ¿Se accedió a la matriz subyacente directamente y / o se modificó?

Estoy de acuerdo con Jared en que probablemente esté en tu código, sin embargo, debe estar seguro de que sus bibliotecas stl están actualizadas.

El sitio dinkumware tiene los archivos parcheados que necesita.

Deberías actualizar solo para estar seguro

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top