Visual Studio const_iterator Zuweisungsfehler

Die Zuweisung eines Standardkonstruiertenvector<int*>::const_iteratorch habe dies auf 5 Visual Studio 2010-Systemen versucht, die alle über Service Pack 1 verfügen. Es schlägt auf 3/5 Computern fehl. Ich konnte jedoch feststellen, was den Fehler auf den 3 Systemen verursacht Ich kann anscheinend keinen Fehlerbericht finden.

Hier ist der Code:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<int*> vec;
    int arr[3] = {};

    for(int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) vec.push_back(arr + i);

    vector<int*>::const_iterator initialized = vec.cbegin();
    vector<int*>::const_iterator uninitialized;

    initialized = uninitialized;

    cout << "Hello World" << endl;

    return 0;
}

Zusehends alles andere als dascout << "Hello World" << endl; ist in Release optimiert, sodass dieses minimale Beispiel nur in Debug fehlschlägt. Aber in Debug ist der Fehler:

Unhandled Ausnahmebedingung um 0x01071e14 in test.exe: 0xC0000005: Zugriffsverletzung beim Lesen des Speicherorts 0x00000000.

Vergleicht man die verknüpften funktionierenden und nicht funktionierenden MSVCP100D.dll-Dateien, so zeigt sich, dass eine leichte Diskrepanz besteht. Die funktionierende .dll lautet Produktversion: 10.0.40219.325 und die nicht funktionierende .dll lautet Produktversion: 10.0.40219.1.

Der eigentliche Fehler tritt in @ a

C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ xutility

Und erneutes Unterscheiden der Arbeits- und Nicht-Arbeitsversion zeigt, dass eine Änderung an der Arbeitsversion vorgenommen wurde. Der nicht funktionierende Code sagt einfach:

if (_Myproxu != _Right._Myproxy)
    _Adopt(_Right._Myproxy->_Mycont);

Der Arbeitscode sagt:

if (_Myproxy == _Right._Myproxy)
    ;
else if (_Right._Myproxy != 0)
    _Adopt(_Right._Myproxy->_Mycont);
else
    {   // becoming invalid, disown current parent
    _Lockit _Lock(_LOCK_DEBUG);
    _Orphan_me();
    }

All das zu sagen, hier ist meine eigentliche Frage. Wie bekomme ich dieses Update? Ich habe mit Windows Update auf die neueste Version aktualisiert, das Problem wurde jedoch nicht behoben. Gibt es einen versteckten Patch, den ich irgendwohin bringen muss, um ihn zu bekommen? Ich kann dieses Problem nirgendwo finden, daher kann ich auch keine Informationen über den Patch finden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage