I’m trying to use a std::vector<>::const_iterator and I get an ‘access violation’ crash. It looks like the std::vector code is crashing when it uses its own internal First_ and Last_ pointers. Presumably this is a known bug. I’m hoping someone can point me to the correct workaround. It’s probably relevant that the crashing function is called from an external library?
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; }
Simply calling ThingList_.size() also crashes.
This is sp6, if it matters.
If you’re passing C++ objects across external library boundaries, you must ensure that all libraries are using the same runtime library (in particular, the same heap allocator). In practice, this means that all libraries must be linked to the DLL version of MSVCRT.